当前位置: 代码迷 >> Web前端 >> java Struts表单交付时多组数据提交
  详细解决方案

java Struts表单交付时多组数据提交

热度:135   发布时间:2012-10-29 10:03:53.0
java Struts表单提交时多组数据提交
引用
AutoArrayList.java 继承ArrayList类,并且重写了get方法.它的主要作用是在struts 表单提交的时候多组数据提交.

package com.baoku.bookair.airelement.flight.forms;

import java.util.ArrayList;

public class AutoArrayList extends ArrayList {
	private Class itemClass;

	public AutoArrayList(Class itemClass) {
		this.itemClass = itemClass;
	}

	public Object get(int index) {
		try {
			while (index >= size()) {
				add(itemClass.newInstance());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.get(index);
	}
}


引用
提交表单时的注意事项
            1)页面必须是struts 表单提交哟。
            2)其次在提交的时候一定要注意input的name属性的写法
              2.1)selfXXXlist表示javaBean中的属性
                 2.2)[数值]表示该集合的下标
                  2.3).xxx表示该集合中包含的类的属性

<input type="text" name="selfXXXlist[0].xxx" value="" />

引用
继承ActionForm的Form类

package com.baoku.hotel.companyMaintainHotel.forms;

import java.util.List;

import javax.persistence.Entity;

import org.apache.struts.action.ActionForm;

import com.util.other.AutoArrayList;

public class XXX extends ActionForm implements java.io.Serializable {
	
	private List<XXX> selfXXXlist = new AutoArrayList(XXX.class);

	public void setXXXlist(List<XXX> XXX) {
		this.selfXXXlist .clear();
		this.selfXXXlist .addAll(XXX);
	}
	public List<XXX> getSelfXXXlist() {
		return selfXXXlist;
	}
}

引用
使用时的注意事项避免提交的数据存在于内存中:
            1)提交表单之后要重定向。
            2)scope的值应为request因为我用的是struts1.0所以默认的是session。
            3)在set方法中需要先清除在添加,如下所示:

public void setXXX(List<XXX> XXX) {
		this.XXX.clear();
		this.XXX.addAll(XXX);
	}