首先是数组数据批量显示的问题。即由一个action到一个jsp页面怎么做?我以我自己写的代码为例。我在action中通过hibernate查到了一批数据,是一个list。即listCourseMsg。
arrayCourseMsg = listCourseMsg.toArray();//我把他转化成了数组
并且在这个action中添加了这个数组相应的get/set方法。
private Object[] arrayCourseMsg ;
public Object[] getArrayCourseMsg() {
return arrayCourseMsg;
}
public void setArrayCourseMsg(Object[] arrayCourseMsg) {
this.arrayCourseMsg = arrayCourseMsg;
}
然后这个数组就有了数据。内部是什么样的对象,下面说JSP的时候再说。下面是JSP页面的一部分:
<s:if test="arrayCourseMsg!=null">
<s:iterator value="arrayCourseMsg" status="stat">
<tr>
<td>
<s:property value="%{arrayCourseMsg[#stat.index].msgTypeId}" />
<s:hidden name="arrayCourseMsg[%{#stat.index}].id" value="%{arrayCourseMsg[#stat.index].id}" />
<s:hidden name="arrayCourseMsg[%{#stat.index}].msgTypeId" value="%{arrayCourseMsg[#stat.index].msgTypeId}" />
</td>
<td>
<s:property value="%{arrayCourseMsg[#stat.index].msgTypeDescription}" />
<s:hidden name="arrayCourseMsg[%{#stat.index}].msgTypeDescription" value="%{arrayCourseMsg[#stat.index].msgTypeDescription}" />
</td>
<td>
<s:property value="%{arrayCourseMsg[#stat.index].msgLogicId}" />
<s:hidden name="arrayCourseMsg[%{#stat.index}].msgLogicId" value="%{arrayCourseMsg[#stat.index].msgLogicId}" />
</td>
<td>
<s:checkbox name="arrayCourseMsg[%{#stat.index}].viaPm" fieldValue="true"></s:checkbox>
</td>
<td>
<s:checkbox name="arrayCourseMsg[%{#stat.index}].viaEmail" fieldValue="true"></s:checkbox>
</td>
<td>
<s:checkbox name="arrayCourseMsg[%{#stat.index}].viaSms" fieldValue="true"></s:checkbox>
</td>
<td>
<s:select list="#session[arrayCourseMsg[#stat.index].msgTypeId]" name="arrayCourseMsg[%{#stat.index}].defaultMsgId" listKey="msgId" listValue="msgPlainContent"></s:select>
</td>
</tr>
</s:iterator>
</s:if>
这里主要是OGNL部分把我难住了,搞了很久。这里只说明一下s:select这个标签,因为这个不容易明白,(其他的不明白的,自己查一下ognl用法),一般要在页面中得到一个session应该是list="#session.SAMPLE", SAMPLE就是你在后台添加的session,arrayCourseMsg[#stat.index].msgTypeId得到的值就是一个session名。因为我在后台加了多个session.
还有一点,在其他标签中我这样用arrayCourseMsg[%{#stat.index}].viaSms来定义name。是为了修改这一系列的数据之后,提交给下一个action需要用到的。
这样做在页面中查看源码时:
name=arrayCourseMsg[0].viaSms
name=arrayCourseMsg[1].viaSms
这样的一系列值。
如果这样写的话arrayCourseMsg[#stat.index].viaSms :那么在页面中查看时,name就是:
arrayCourseMsg[#stat.index].viaSms
arrayCourseMsg[#stat.index].viaSms
再提交的时候,不容易定义name。
还有一点,像:
name=arrayCourseMsg[0].viaSms
name=arrayCourseMsg[1].viaSms
这样的一系列数组值,提交的时候,action怎么接收的问题?
下面是提交这样数据的时候,action类要做的:
1. 定义属性名以及set/get方法
private List<TrainingMessageTypes> arrayMessageTypes;
2. 实现这个接口implements ModelDriven 以及它的方法
public Object getModel() {
return arrayMessageTypes;
}
然后这个List--->arrayMessageTypes就能接收到所有的数组数据了。
分享到:
相关推荐
亲自做了一个struts2后台接收前台jsp页面传来的数组参数demo,因为参考网上的资源如用webwork表单提交等集成到项目有问题,所以做了一个单独的demo,经测试,用表单提交类似users[0].name,users[1].name的数组参数是...
struts提交list数据,批量保存到数据库。
利用AJAX传递JSON数组,后台struts2的action接收。 详细代码简单易懂。
struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据
文档说了2种方案,对比说明各自优缺点, 批量提交数据,action处理方式和前端页面属性命名方式。
自己做的一个struts2 实现文件批量上传功能,
使用struts2表单传值,可以传一个或者是作为一个对象的各个属性传,都非常灵活便捷。但是如果我们需要传一个数组并希望struts正确接收,该怎么处理呢? 下面我将通过普通表单和ajax两种方式讲解。首先我们有如下一个...
其实只有一点struts2 iterator标签遍历二维数组
基于struts2的用数组接受多个文件上传+过滤器 用数组接受的同时多文件上传
struts2 多图 批量上传 使用与初学struts2的初学者
Struts2 的批量删除, 通过Ajax... 等等
Struts2 中集合数组生成xls 文件.doc
运用struts2将数据库中的数据导入和导出,同时会用到poi的jar包
Struts2文件批量上传,里面有很多的web包,每一个都是一个完整的项目,每个web包中都有详细的说明文档
当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会再次出现表单重复提交的问题。...
关于struts2的批量文件下载,文件的下载
Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip
关于Struts2批量上传,JSP,action都有。
这里是Struts2 中放置表单重复提交的例子。