比如有如下页面列表
姓名     民族    年龄
h1        XX       22
h2        XX       23
h3        XX       24年龄列是text框,我现在可以在每一行的年龄列的text框中输入数字,然后有个更新按钮,点击更新按钮可以更新每个人的年龄,依据text框中输入的数.我的问题是我在jsp怎么能一对一的将这些值传给action的form呢?每条数据都有ID,到了action我怎么能知道h1的年龄就是22,h2的年龄就是23呢?hidden中又不能存list?高手指点

解决方案 »

  1.   

    提示下:数据在页面都是用<logic:iterator>循环输出的,不是一条一条那么写的
      

  2.   

    那你可以用不同的name用request取嘛!
      

  3.   

    在你的form中加一个map属性,这个map和页面的对应,map中的key就是id,而value对应着页面的一行就可以了。
      

  4.   

    http://blog.csdn.net/haydenwang8287/archive/2008/03/17/2192892.aspx
    很简单的一个例子
      

  5.   

    你的数据信息应该有能唯一确定的字段,比如id之类的。
    可以用该唯一字段(或唯一字段连接一些其他字符串)作为年龄edit的id,
    这样传到 action后, 可以有两种方法设置值:
    一,通过同样的条件查询出显示在页面的那些数据,然后根据这些数据的唯一字段进行处理后就能在 request中获取对应的年龄值了,再设置就行了。二,与一切好是相反的。
    先从 request里面获取所有的年龄传过来的值,这个可以通过查询request里面变量名是否符合你在jsp上年龄edit名来获取,然后解析这些符合edit名的变量名,获取 唯一字段,这样有了唯一字段和传过来的值后也能设置值了。
      

  6.   

    jsp
    第一行
    <input type="hidden" name="flag" value="1" />
    <input name="nationality_1" />
    <input name="name_1" />
    <input name="age_1" />第二行
    <input type="hidden" name="flag" value="2" />
    <input name="nationality_2" />
    <input name="name_2" />
    <input name="age_2" />...action
    String[] flags = request.getParameterValues();
    for(String flag : flags ) {
        ....
    }
      

  7.   

    绑定dto把整个dto传过去就会是一个整体了
      

  8.   

    不多。你可以给他们设定个checkbox按钮。然后把他们的ID放在checkbox里面。然后到后台提取的时候,你就根据你的checkbox的ID值和这个字段的ID值相对应。如果成功。那么把他的值传进去,如果不对应,则继续循环你说的这个操作。需要把值都放在数组里面。谢谢。
      

  9.   

    给你写个例子。actionform就采用数组接受就行。这是页面,其中每行的文本框,就相当于你通过logic:iterator遍历出来的。
    <form action="user.do">
    <table>
    <tr>
    <td>
    <input type="text" name="names" value="h1" />
    </td>
    <td>
    <input type="text" name="ages" />
    </td>
    </tr>
    <tr>
    <td>
    <input type="text" name="names" value="h2" />
    </td>
    <td>
    <input type="text" name="ages" />
    </td>
    </tr>
    <tr>
    <td>
    <input type="text" name="names" value="h3" />
    </td>
    <td>
    <input type="text" name="ages" />
    </td>
    </tr>
    </table>
    </br>
    <input type="submit" value="修改" />
    </form>ActionFormpublic class UserForm extends ActionForm{

    private String[] names;
    private String[] ages;
    public String[] getNames() {
    return names;
    }
    public void setNames(String[] names) {
    this.names = names;
    }
    public String[] getAges() {
    return ages;
    }
    public void setAges(String[] ages) {
    this.ages = ages;
    }
    }
    配置文件:  <form-beans >
     <form-bean name="userForm" type="com.yourcompany.struts.form.UserForm" />
      </form-beans>
      <action-mappings >
            <action
          path="/user"
          scope="request"
          name="userForm"
          input="/index.jsp"
          type="com.yourcompany.struts.action.UserAction">
          <forward name="xxx" path="/xxx.jsp"></forward>
          </action>
      </action-mappings>Action:这里我们就为了打印输出。public class UserAction extends Action{
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    UserForm userForm = (UserForm) form;
    String[] strs=userForm.getNames();
    String[] ages=userForm.getAges();
    for(int i=0;i<strs.length;i++){
    System.out.println(strs[i]+"   "+ages[i]);
                            //从输出结果上,你可以明白他们数组的下标都是相同的。
    }
    return mapping.findForward("xxx");
    }
    }
      

  10.   


    我这个程序还不能直接submit,必须要掉js,然后要跳转,不能直接提交form,所以页面中的一些值是带不过去的
      

  11.   

    提示下:数据在页面都是用<logic:iterator>循环输出的,不是一条一条那么写的
    你同样可以把age存储起来和原来的比较啊
      

  12.   

    你把id和年龄绑定,页面里给个隐藏域,提交时给隐藏域赋值,隐藏域的值如 ID:年龄,ID:年龄。。,到后台,去解析这个隐藏域的字符串
      

  13.   

      可以用json对象传值。
      

  14.   

    建议楼主用Ajax,在每行数据的后面来个修改按钮,一点就用Ajax改变了数据库的数据,来个删除也可以噢,多Happy=.=
      

  15.   

    那你可以用不同的name用request取嘛!