当前位置:编程学习 > JAVA >>

strust2 <iterator>怎么传递list传回action

通过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"/>"/>
--------------------编程问答-------------------- 我知道一般的String可以用name传递,但是怎么写呢? --------------------编程问答-------------------- 你这样只能用jquery,遍历ID为FS_开头的,之后得到后面的系统ID,封装成一个字符串,之后传给action! --------------------编程问答-------------------- 从楼主的代码上看你的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 --------------------编程问答--------------------
引用 3 楼 suciver 的回复:
从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
action中定义一个List<YourObject> list生成set方法
前台的input name属性使用list[${mlstatic.index}].ZYFS或者list[<s:property value='#mlstatic.index'/>].ZYFS这样action就能接收了。
关键要弄明白s……

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

--------------------编程问答-------------------- 实际上我的那个list里面就是用jdbc查出来的一个个map<String,String> --------------------编程问答-------------------- 使用jQuery发送字符串吧,简单易行 --------------------编程问答--------------------
引用 5 楼 cloudphoenix 的回复:
实际上我的那个list里面就是用jdbc查出来的一个个map<String,String>

一样的ognl一样的写法只是你List<Map<String,String>> list;
jsp的话你要自己去实现 --------------------编程问答-------------------- 这种还是用jquery发送字符串来的快,你的list里面数据应该 不会很多! --------------------编程问答--------------------

   <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"/>"/>
--------------------编程问答--------------------
   <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 楼 forgetsam 的回复:
XML/HTML code??



12345

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

#mlstatic.index是什么意思? --------------------编程问答-------------------- name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
这种写法action里得不到
我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"
--------------------编程问答--------------------
引用 13 楼 cloudphoenix 的回复:
name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
这种写法action里得不到
我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"

我不是也提供了el的方式吗
list[${mlstatic.index}].ZYFS --------------------编程问答-------------------- 个人认为不能用<s:property value="#ml.index"/>来取值。m1是id  --------------------编程问答--------------------
引用 13 楼 cloudphoenix 的回复:
name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
这种写法action里得不到
我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"


和action里取得到取不到还有很远,你先打开页面源代码,看看是不是变成了
name=“list[0].ZYFS"
name=“list[1].ZYFS"
name=“list[2].ZYFS"
如果变了不可能取不到,没变当然取不到。 --------------------编程问答--------------------
引用 16 楼 forgetsam 的回复:
引用 13 楼 cloudphoenix 的回复:
name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
这种写法action里得不到
我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"

和action里取得到取不到还有很远,你先打开页面源代码,看看是不是变成……

是变了的,但是取不到值,到action里list还是空的……我没用ognl
--------------------编程问答--------------------
引用 17 楼 cloudphoenix 的回复:
是变了的,但是取不到值,到action里list还是空的……我没用ognl


你用不用ognl是你能决定的,struts能不能解析ognl不是你能决定的

你自己把对象名改了,那你后台有这个加了泛型的list变量吗?有get/set吗。 --------------------编程问答-------------------- http://blog.csdn.net/yp120yp/article/details/6891450
这里有个struts list传参例子,希望对你有帮助。 --------------------编程问答--------------------
引用 18 楼 forgetsam 的回复:
引用 17 楼 cloudphoenix 的回复:
是变了的,但是取不到值,到action里list还是空的……我没用ognl

你用不用ognl是你能决定的,struts能不能解析ognl不是你能决定的

你自己把对象名改了,那你后台有这个加了泛型的list变量吗?有get/set吗。


get/set肯定有啊。你是说一定要用ognl吗 --------------------编程问答-------------------- 楼主还有什么不明白啊 --------------------编程问答--------------------
引用 3 楼 suciver 的回复:
从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
action中定义一个List<YourObject> list生成set方法
前台的input name属性使用list[${mlstatic.index}].ZYFS或者list[<s:property value='#mlstatic.index'/>].ZYFS这样action就能接收了。
关键要弄明白s……

我这里的list是你action中的变量名list,你的变量名是什么就用什么。这个就是例子原型,举一反三别照着写。
根据你的变量名改变,还有我也说了如果你这里的<s:property value="#mlstatic.index"/>没用就换成${mlstatic.index} --------------------编程问答--------------------
引用 22 楼 suciver 的回复:
引用 3 楼 suciver 的回复:
从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
action中定义一个List<YourObject> list生成set方法
前台的input name属性使用list[${mlstatic.index}].ZYFS或者list[<s:property value='#mlstatic.index'/>].ZYFS这样……


怎么使用OGNL呢,需要哪些配置文件? --------------------编程问答--------------------
引用 23 楼 cloudphoenix 的回复:
引用 22 楼 suciver 的回复:
引用 3 楼 suciver 的回复:
从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
action中定义一个List<YourObject> list生成set方法
前台的input name属性使用list[${mlstatic.index}].ZYFS或者list[<s:property value='#mls……

你已经有struts2了那么ognl就可以使用了。至于OGNL详细的使用这个不是几句话可以讲完的 --------------------编程问答-------------------- 楼主先把这个需求做好了,举一反三,OGNL这个可以慢慢研究 --------------------编程问答-------------------- 遍历的数据放到input里面然后再提交 --------------------编程问答-------------------- 说简单点,el可以调用属性的get()方法,ognl可以调用属性的get()方法,set方法等,我也忘了,不是很难,struts2框架上应该会有,你看看吧 --------------------编程问答--------------------
引用 24 楼 suciver 的回复:
引用 23 楼 cloudphoenix 的回复:
引用 22 楼 suciver 的回复:
引用 3 楼 suciver 的回复:
从楼主的代码上看你的list里面似乎是对象那么可以使用struts2的ognl
action中定义一个List<YourObject> list生成set方法
前台的input name属性使用list[${mlstatic.index}].ZYFS或者l……

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

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"
也不行,我看有哪里没写对吗……

--------------------编程问答-------------------- 顶以下 求帮助 --------------------编程问答-------------------- 做出来没有? 如果没有做出来找我,跟我留言 --------------------编程问答-------------------- 因为我最近才了一个项目 和你说的基本符合 --------------------编程问答-------------------- 楼上,你能实现吗?帮帮我吧…… --------------------编程问答-------------------- 那位高手能帮帮我吗 --------------------编程问答-------------------- 不好意思了 ,我今天在上 ,之前有点忙,都没有上。不知道你现在解决了没有?如果没有加QQ807538479 名字兰伟 --------------------编程问答-------------------- 感谢各位的帮忙了,可能是框架搭建的问题。我还是用分割字符串的方法先凑合着吧。 --------------------编程问答-------------------- 这个好像可以直接使用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"/>

这样我上个项目用过,应该可以实现吧! --------------------编程问答-------------------- <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> --------------------编程问答-------------------- 我记得应该是这样
<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" /> --------------------编程问答-------------------- 1.其实没有什么特殊要求的话就放到迭代放到<form>表单中,然后post提交就可以了;
2.jquery将参数获取,然后通过点击事件传入,根据你的需求是不是发送ajax请求就看你是否需要了。 --------------------编程问答--------------------
引用 17 楼 cloudphoenix 的回复:
引用 16 楼 forgetsam 的回复:引用 13 楼 cloudphoenix 的回复:
name=“list[<s:property value='#mlstatic.index'/>].ZYFS"
这种写法action里得不到
我改成了name=“list[<s:property value='#mlstatic.ORDERS'/>].ZYFS"

和action里取得到取不到……
是不是你后台又重新new过了?struts自带有s标签,可以直接让后台跟前台的对象联系起来 --------------------编程问答-------------------- List<map<String,String>>在Struts2里面是无法直接在set进action中的,就是说list[0].name是不能,可以将里面的map写成一个POJO,比如List<User>,这样上面的list[0].name就会传到action中,就是把map的list变成一个对象list,需要什么属性,在POJO中定义就OK了; --------------------编程问答-------------------- 在action里面写个list,然后再itrator引用这个list的name就可以拿到list了 --------------------编程问答-------------------- 不需要传也可以直接根据条件在ACTION中再查询一次得到LIST也可以。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,