首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2批量数据的交付

2012-11-13 
Struts2批量数据的提交最近遇见一个问题就是struts2当中批量的数据如何提交到action中去,几经转折最终实现

Struts2批量数据的提交

最近遇见一个问题就是struts2当中批量的数据如何提交到action中去,几经转折最终实现了这样的功能。

下面是action的代码:

public class OrderManageAction extends ActionSupport {private Order order;    //订单的POprivate 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 {@Overridepublic 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中去@Overridepublic String convertToString(Map context, Object o) {// TODO Auto-generated method stubreturn null;}}

?

?? 最后是页面JSP书写了。页面很简单,就是你的批量的数据就是Product这个PO对应在页面的input框的name值都必须为list。这样就完成了。

?? 在页面配置name的时候还可以采用一种方式,name="list[0].name",name="list[0].adress" 这样就不需要转换器就可以直接提交数据。但是个人觉得使用第一种方法比较好一点。

热点排行