Struts2批量数据的提交

最近遇见一个问题就是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" 这样就不需要转换器就可以直接提交数据。但是个人觉得使用第一种方法比较好一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值