最近遇见一个问题就是struts2当中批量的数据如何提交到action中去,几经转折最终实现了这样的功能。
下面是action的代码:
public class OrderManageAction extends ActionSupport {
private Order order; //订单的PO
private List<Product> list = new ArrayList<Product>(); //订单物品list对象。数据库order和product是主从表关系。
...
...
...
...
public String execute() throws Exception{
System.out.println(order.getDate()+" "+order.getOrderName());
System.out.println(this.list.size());
// 简单的打印一下list的大小。查看是否把数据封装进去了
}
}
下面的工作就是定义一个转换器,如果是使用的struts2的标签库,那么日期格式的字符串Struts2会自动帮我们转换,但是对于普通的HTML标记,date类型的也是需要写转换器的。在此就不书写了。下面定义一个对list的转换器。
package com.wh.conversion;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.wh.bean.Product;
public class ProductListConverter extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
int trNum = values.length / 7;
List<DetailPO> list = new ArrayList<DetailPO>();
int pointer = 0;
for (int i = 1; i <= trNum; i++) {
Product product = new Product();
product.setName(values[pointer]);
product.setAdress(values[++pointer]);
list.add(product);
pointer = i * 7;
}
return list;
}
//将页面的数据取出来。然后封装成Product对象,然后放置到list中去
@Override
public String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
return null;
}
}
最后是页面JSP书写了。页面很简单,就是你的批量的数据就是Product这个PO对应在页面的input框的name值都必须为list。这样就完成了。
在页面配置name的时候还可以采用一种方式,name="list[0].name",name="list[0].adress" 这样就不需要转换器就可以直接提交数据。但是个人觉得使用第一种方法比较好一点。
分享到:
相关推荐
在处理批量数据提交时,Struts2提供了一种高效的方法来管理并存储大量数据到数据库。本篇文章将深入探讨如何利用Struts2实现批量提交数据的功能。 ### 一、批量提交的概念 批量提交是指一次性处理多个数据记录,而...
2. 用户点击“批量修改”按钮,表单数据(`UserForm`)被提交到服务器。 3. Struts框架接收到请求后,根据配置的Action映射,调用相应的Action类的方法(例如`execute()`)。 4. 在Action类中,我们处理表单数据,...
在Web应用开发过程中,特别是在使用Struts2框架时,经常需要处理大量的数据提交操作。这些数据可能来自于用户输入或者是系统内部的数据迁移等场景。对于这种需求,本文档将详细介绍两种批量提交数据的方法,并对比...
当客户端提交包含文件字段的表单时,Struts2会将这些文件字段封装为`File`对象数组,并提供相应的属性来访问文件的元数据(如文件名、类型等)。这种设计允许开发者在Action类中直接处理多个上传文件,而无需额外...
Struts2批量插入是Web开发中常见的操作,主要用于提高数据处理效率,特别是在处理大量数据时。Struts2作为一款流行的Java MVC框架,提供了强大的功能来支持这种操作。本篇文章将深入探讨Struts2如何实现批量插入,并...
当用户提交表单时,Struts2会自动调用`Commons FileUpload`处理文件,并将文件内容存储到服务器的临时目录。为了持久化这些文件,开发者需要在Action中实现文件的移动或复制,例如将文件移动到指定的服务器目录。 ...
总结来说,实现Struts2的批量删除功能,需要整合视图、控制和数据访问层的组件。通过前端JSP页面收集用户选择,利用Struts2的MVC模型处理请求,最后在数据库层面执行删除操作。这个过程涉及到Java编程、JSP模板、...
前台checkbox提交的数据,Struts2在后台自动封装成数组/List。...前台向后台批量提交对象数据,struts2就显得力不从心了,本案例着重介绍,批量向后台提交对象数据,源码,有图有真相哦! 欢迎交流、吐槽、指导批评!
通过这个教程,你将掌握如何在Struts2.0中实现批量数据提交,以及如何利用Struts2的特性优化代码结构和提高代码复用性。对于想要提升Java Web开发技能的开发者来说,这是一个非常实用的实践教程。通过学习和实践,你...
2. 类型转换:使用Struts2的转换器或自定义转换器,将收集到的原始数据转换为对应的Java对象。 3. 验证:在插入前,对转换后的数据进行验证,确保其符合业务规则。 4. 批量操作:使用JDBC批处理或ORM框架如Hibernate...
在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...
在批量删除操作中,Struts2会接收用户的批量删除请求,通过Action类来处理这些请求,并将结果转发到相应的视图页面。Action类通常会注入Spring管理的业务服务层,以便调用删除方法。 其次,Hibernate是一个对象关系...
当用户提交表单时,Struts框架会自动将表单数据填充到ActionForm实例中。 为了提交多行数据,我们通常会在HTML页面中使用多个相同的输入元素,比如表格,每个行代表一行数据。例如,我们可以创建一个表格,每行包含...
表单需要设置`enctype="multipart/form-data"`属性,这是为了允许表单提交包含二进制数据(如文件)。可以使用JavaScript或jQuery插件来实现无刷新的多文件选择,这里使用了一个名为“仿163网盘无刷新上传”的JS控件...
在Java编程中,Struts2框架提供了一种批量数据提交的解决方案,这使得开发者能够方便地处理用户在页面上输入的多条记录,并一次性提交到数据库。以下是对这个主题的详细解释: 首先,批量数据提交的关键在于Struts2...
这通常涉及到多部分表单提交(multipart/form-data),Struts2提供了Interceptor(拦截器)来处理这类请求。文件会被临时存储在服务器上,然后通过Action处理,将文件信息插入到数据库中,同时文件内容可能以BLOB...
在Struts2中,这一过程变得自动化且高效,特别是对于批量数据处理,Struts2提供了批量类型转换的能力,大大简化了开发者的工作。 批量类型转换主要涉及两个核心概念:`Converter`和`ConversionService`。`Converter...
描述中的“Struts2-057扫描工具”就是为了这个目的而设计的,它支持批量扫描检查,可以快速有效地检测出环境中是否存在Struts2-057漏洞。 **扫描工具的使用** 在提供的压缩包文件中,"Struts2漏洞检查工具2018版....
在Struts2中实现Excel的导入和导出功能,可以帮助用户处理大量的数据,例如批量导入数据库,或者允许用户下载数据为Excel格式进行分析。下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 ...
2. **商品记录修改**:修改操作类似,前端展示商品详情,用户更改后通过AJAX提交修改的数据。Action接收到这些数据,更新数据库中的相应记录,然后反馈操作结果。 3. **动态添加商品记录**:用户填写新的商品信息后...