通过s:iterator传了一个list到jsp,那么逆过程怎么写,就是让这个s:iterator中的信息传回list,新的list也行,原文如下。项目经理不让在JSP里写JAVA代码。<s:iterator value="kczyList" id="ml" status="mlstatic">
资源分数:
<input  
id="fs_<s:property value="#ml.ZYDFB_ID"/>"
value="<s:property value="#ml.ZYFS"/>"/>

解决方案 »

  1.   

    我知道一般的String可以用name传递,但是怎么写呢?
      

  2.   

    你这样只能用jquery,遍历ID为FS_开头的,之后得到后面的系统ID,封装成一个字符串,之后传给action!
      

  3.   

    从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
    action中定义一个List<YourObject> list生成set方法
    前台的input name属性使用list[${mlstatic.index}].ZYFS或者list[<s:property value='#mlstatic.index'/>].ZYFS这样action就能接收了。
    关键要弄明白struts2的ognl。
    这里${mlstatic.index}就是为了取得你的下标,转换成数字就会变成list[0].ZYFS,list[1].ZYFS
      

  4.   

    OGNL不是很熟悉……我先看看
    最后问下,jsp能做一个map<String,String>然后返回action吗,不用OGNL的话
      

  5.   

    实际上我的那个list里面就是用jdbc查出来的一个个map<String,String>
      

  6.   

    使用jQuery发送字符串吧,简单易行
      

  7.   

    一样的ognl一样的写法只是你List<Map<String,String>> list;
    jsp的话你要自己去实现
      

  8.   

    这种还是用jquery发送字符串来的快,你的list里面数据应该 不会很多!
      

  9.   


       <s:iterator value="kczyList" id="ml" status="mlstatic">
    资源分数:
    <input  name="kczyList[s:property value="#mlstatic.index"/>].ZYFS" 
    id="fs_<s:property value="#ml.ZYDFB_ID"/>" 
    value="<s:property value="#ml.ZYFS"/>"/>
      

  10.   

       <s:iterator value="kczyList" id="ml" status="mlstatic">
    资源分数:
    <input  name="kczyList[<s:property value="#mlstatic.index"/>].ZYFS" 
    id="fs_<s:property value="#ml.ZYDFB_ID"/>" 
    value="<s:property value="#ml.ZYFS"/>"/>
      

  11.   

    name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
    这种写法action里得不到
    我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"
      

  12.   

    我不是也提供了el的方式吗
    list[${mlstatic.index}].ZYFS
      

  13.   

    个人认为不能用<s:property value="#ml.index"/>来取值。m1是id 
      

  14.   


    和action里取得到取不到还有很远,你先打开页面源代码,看看是不是变成了
    name=“list[0].ZYFS"
    name=“list[1].ZYFS"
    name=“list[2].ZYFS"
    如果变了不可能取不到,没变当然取不到。
      

  15.   


    是变了的,但是取不到值,到action里list还是空的……我没用ognl
      

  16.   


    你用不用ognl是你能决定的,struts能不能解析ognl不是你能决定的你自己把对象名改了,那你后台有这个加了泛型的list变量吗?有get/set吗。
      

  17.   

    http://blog.csdn.net/yp120yp/article/details/6891450
    这里有个struts list传参例子,希望对你有帮助。
      

  18.   


    get/set肯定有啊。你是说一定要用ognl吗
      

  19.   

    我这里的list是你action中的变量名list,你的变量名是什么就用什么。这个就是例子原型,举一反三别照着写。
    根据你的变量名改变,还有我也说了如果你这里的<s:property value="#mlstatic.index"/>没用就换成${mlstatic.index}
      

  20.   


    怎么使用OGNL呢,需要哪些配置文件?
      

  21.   

    你已经有struts2了那么ognl就可以使用了。至于OGNL详细的使用这个不是几句话可以讲完的
      

  22.   

    楼主先把这个需求做好了,举一反三,OGNL这个可以慢慢研究
      

  23.   

    遍历的数据放到input里面然后再提交
      

  24.   

    说简单点,el可以调用属性的get()方法,ognl可以调用属性的get()方法,set方法等,我也忘了,不是很难,struts2框架上应该会有,你看看吧
      

  25.   

    这个直接在JSP页面上使用就可以了吗,不需要在JAVA代码里加入什么?比如注入
      

  26.   


    private List kczyList= new ArrayList();
    public String zyPy() throws Exception{
        if(kczyService.pyzy(zyfs, yhzyb_id,kczyList)){
            sign = "updateSuccess";
        }else{
            sign = "updateFail";
        }
        return "pyzyview";
    }
    public List getKczyList() {
    return kczyList;
    }
    public void setKczyList(List kczyList) {
    this.kczyList = kczyList;
    }JSP代码<s:iterator value="kczyList" id="ml" status="mlstatic">
    <input type="text" class="asArea" id="tmfs<%=j++%>" size="2" 
    name="kczyList[${mlstatic.index}].FS" onkeyup="setfz();" style="width:4em;margin:0 2px;" />
    </s:iterator> 虽然在网页源文件中,下标已经修改了
    <input type="text" class="asArea" id="tmfs1" size="2" 
    name="kczyList[0].DF" onkeyup="setfz();" style="width:4em;margin:0 2px;" />但是进入action中仍然没有值啊
    换成name=“kczyList[<s:property value='#mlstatic.index'/>].ZYFS"
    也不行,我看有哪里没写对吗……
      

  27.   

    这个好像可以直接使用Struts2中自带的功能实现吧<s:iterator value="kczyList" status="mlstatic">
    资源分数:
    <input  
    id="fs_<s:property value="#ml.ZYDFB_ID"/>"
    value="<s:property value="#ml.ZYFS"/>" name="kczyList2[mlstatic.index].ZYFS"/>这样我上个项目用过,应该可以实现吧!
      

  28.   

    <s:iterator value="list" status="v"> <tr> <td>
    <input type="text" size='1'
    name="list[<s:property value="#v.index"/>].rubM"
    id="list[<s:property value="#v.index"/>].rubM"
    maxlength="100" value="<s:property value="rubM"/>" />
    </td>
    <td>
    <input type="text" size='1'
    name="list[<s:property value="#v.index"/>].rubR"
    id="list[<s:property value="#v.index"/>].rubR"
    maxlength="100" value="<s:property value="rubR"/>" />
    </td>
    </s:iterator>
      

  29.   

    我记得应该是这样
    <s:iterator value="kczyList" status="mlstatic">
    资源分数:
    <input  
    id="fs_<s:property value="#ml.ZYDFB_ID"/>"
    value="<s:property value="#ml.ZYFS"/>"
    name="kczyList2[<s:property value=#mlstatic.index/>].ZYFS" />
      

  30.   

    1.其实没有什么特殊要求的话就放到迭代放到<form>表单中,然后post提交就可以了;
    2.jquery将参数获取,然后通过点击事件传入,根据你的需求是不是发送ajax请求就看你是否需要了。
      

  31.   

    是不是你后台又重新new过了?struts自带有s标签,可以直接让后台跟前台的对象联系起来
      

  32.   

    List<map<String,String>>在Struts2里面是无法直接在set进action中的,就是说list[0].name是不能,可以将里面的map写成一个POJO,比如List<User>,这样上面的list[0].name就会传到action中,就是把map的list变成一个对象list,需要什么属性,在POJO中定义就OK了;
      

  33.   

    在action里面写个list,然后再itrator引用这个list的name就可以拿到list了
      

  34.   

    不需要传也可以直接根据条件在ACTION中再查询一次得到LIST也可以。