首先是数组数据批量显示的问题。即由一个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批量提交数据解决方案 在Web应用开发过程中,特别是在使用Struts2框架时,经常需要处理大量的数据提交操作。这些数据可能来自于用户输入或者是系统内部的数据迁移等场景。对于这种需求,本文档将详细...
当客户端提交包含文件字段的表单时,Struts2会将这些文件字段封装为`File`对象数组,并提供相应的属性来访问文件的元数据(如文件名、类型等)。这种设计允许开发者在Action类中直接处理多个上传文件,而无需额外...
在Struts2中,这一过程变得自动化且高效,特别是对于批量数据处理,Struts2提供了批量类型转换的能力,大大简化了开发者的工作。 批量类型转换主要涉及两个核心概念:`Converter`和`ConversionService`。`Converter...
前台checkbox提交的数据,Struts2在后台自动封装成数组/List。...前台向后台批量提交对象数据,struts2就显得力不从心了,本案例着重介绍,批量向后台提交对象数据,源码,有图有真相哦! 欢迎交流、吐槽、指导批评!
在Java编程中,Struts2框架提供了一种批量数据提交的解决方案,这使得开发者能够方便地处理用户在页面上输入的多条记录,并一次性提交到数据库。以下是对这个主题的详细解释: 首先,批量数据提交的关键在于Struts2...
本篇文章将详细探讨如何使用Struts的`FormFile`来实现批量上传图片的功能。 ### 1. FormFile概述 `FormFile`是Struts的`org.apache.struts.action.ActionForm`类的一个属性,它提供了对上传文件的封装,包括文件名...
2. **Action设计**:在Struts2的Action中,接收批量操作的数据,如列表或数组,然后调用Hibernate的相关方法进行处理。 3. **Session操作**:使用Hibernate的SessionFactory创建Session,Session是操作数据库的接口...
在处理用户表单提交的数据时,Struts2提供了一套完善的转换器(Converter)和验证(Validation)框架,使得类型转换和数据验证变得更加便捷和高效。 ### 1. Struts2 内置转换器 Struts2 自带了一系列内置转换器,...
该方法通过遍历`String[] s_id2`数组来实现批量添加操作。具体实现逻辑如下: ```java public String lrcj() { try { for (int j = 0; j < s_id2.length; j++) { this.i = j; score_luru(); // 调用单条记录...
在这个案例中,批量删除功能被应用于Struts Action层、Spring Service层、Spring DAO层以及Hibernate数据持久化层。 #### 1.1 DAO层设计 - **接口定义**:`public void deleteAll(List list);` - 这个接口定义了...
2. **example-multiple.jsp**:可能展示了如何处理多选数据的情况,比如批量删除、编辑或过滤,这在需要处理大量数据时非常有用。 3. **index.jsp**:通常作为应用程序的主入口页面,它可能包含导航菜单和登录界面...
在提交数据时,如示例所示,使用jQuery的`datagrid`插件,将表单字段值拼接到URL中,以GET方式发送到`queryRole.action`,或通过`$.post`函数以POST方式发送到`editEmploySalaryInfo.action`。 3. **动态生成元素**...
在更复杂的Java Web应用中,通常会使用MVC(Model-View-Controller)框架,如Struts,来分离表现层、业务逻辑层和数据访问层,提高代码的可维护性和可扩展性。 综上所述,这个简单的员工管理系统利用了JDBC进行...
##### jdbc分段批量提交的时候出现异常怎么处理? - 使用事务管理,确保数据的一致性。 - 对异常进行捕获和处理。 ##### jdbc批量处理数据 - 使用`PreparedStatement`的`addBatch()`和`executeBatch()`方法批量处理...
- POST请求用于提交数据,参数放在请求体中。 - GET请求长度受限,POST请求不受限。 - **Https协议的实现**: - 基于SSL/TLS加密传输。 - 客户端与服务器通过握手过程协商加密算法和密钥。 - 保证数据传输的...
- 提供了验证功能,可以在提交到服务器之前进行数据校验。 2. **Struts框架的特点:** - MVC设计模式,将模型、视图和控制器分离。 - 支持国际化、文件上传下载等功能。 - 社区活跃,有大量的插件和扩展。 3. ...
在Web开发中,表单提交的数据通常需要填充到对应的实体类中。使用反射可以实现这一功能: - 使用`Class.forName()`加载表单对应的实体类。 - 使用`BeanUtils.populate()`方法将表单数据自动填充到实体类的属性中。 ...