页面初始化的action中有一个list属性,得到值后在页面中用s:iterator迭代出来,每一行都有一个属性需要在页面中输入,用了s:textfield,点保存时,如何让保存的action能够得到修改后的list?谢谢先了!

解决方案 »

  1.   

    s:textfield   加name属性    然后再action里写个页面上的name属性值的setter/getter方法  就可以获得相应的值。 例如:<s:textfield name="username"/> 在action里写个private String username;  getter/setter方法在此就省略了...       方法中直接调用那个username属性就OK。
      

  2.   

    不是这么简单,我的类似这样List<people> peopleList<s:iterator value="peopleList" status="dtl">
                <tr> 
                    <td><s:property value="people.name" />&nbsp;</td>
                    <td><s:property value="people.sex" />&nbsp;</td>                <td><s:property value="people.age" />&nbsp;</td>
                    <td><s:textfield name="peopleList[%{#dtl.index}].age"/>
                    </td>
                </tr>
                
       </s:iterator> 
    我想知道,如何在保存的action中取到修改后的peopleList
      

  3.   

    页面初始化的action将peopleList存放到session作用域中,页面文本框的name为ages,点击保存时,ages的值字段会字段封装到String[] ages数组。保存的action代码可以参考如下代码:public class InitAction extends ActionSupport implements ServletRequestAware
    {
    private HttpServletRequest request;
    private String[] ages; public void setAges(String[] ages){
    this.ages=ages;
    } public String[] getAges(){
    return ages;
    }  public String exceute(){
            //从session中取出peopleList
    HttpSession session = request.getSession();
    List peopleList = (List)session.getAttribute("peopleList"); for(int i=0;i<peopleList.size();i++){
    People people = (People)peopleList.get(i);
    people.setAge(Integer.valueOf(ages[i]));//赋值
    } //peopleList就为修改后的List
                return SUCCESS;
        }

     public HttpServletRequest getRequest() {
            return request;
        }     public void setServletRequest(HttpServletRequest request) {
            this.request = request;
            
        }}感觉这样有点麻烦,但能解决问题,期待其他意见。
      

  4.   

    <td> <s:textfield name="peopleList[%{#dtl.index}].age"/> 
    这句话楼主确定没出问题?
    还有就是楼主莫非想做的就是批量修改?
    name属性相同的话,表单会把所有数据都传到后台取的,值是用逗号分开了,楼主就自己慢慢取割了处理吧
      

  5.   

    3楼的方法的确能解决问题,我已经测试成功了,网上找了很多办法,都不好用,以前用JSF时,只要把list放到session中,页面不管怎么变化,再从session中取出后,也是变化后的值,这两个框架的机制差别还挺大。
      

  6.   

    把页面上textfield标签的name命名为action中对应list属性,如list[i].att,并把textfield放在form中,form对应的action应该写成相应目标action
      

  7.   

    为什么我从session里取的值是空呢
      

  8.   

    我也想知道,应该是很常用的需求呀,
    一个明细部,然后把信息显示出来,然后可以在每行修改,然后提交,登录数据库。难道就没人有过这样的需求?把需要修改的属性做成单独的List或者String[]倒是可以,然后再循环往之前的list里面merge。但我觉得这个方法多笨拙呀,以后要是需要修改,加个字段什么的,开销得多大呀?struts1的时候都可以自动填充到bean然后添加到list里,难道struts2反倒退化了做不到了?我在等一个星期,没办法只能先用每个字段分别定义List的笨方法了。。