在struts框架中常常會遇到多行表單的情況, 如何有效的利用struts框架提供的自動收集機制來處理呢? 這裡提供一個簡便的方法.
可以用List來解決這個問題. List中的每一個元素都是一個有效的對象.
例如:
Class ... TestBean ...{
private List test = new ArrayList();
...
...
public Lisg getTest(){....}
}
其中test List中的每一個元素又是一個SubTestBean
Class ... SubTestBean{
private int id;
private String name;
get...(){}
set...(...){}
}
這樣我們在定義多個行的時候便可以如此處理(假設testbean已經放在request中):
這樣信息便會自動顯示, 但是現在還不能夠自動收集, 如何才能正確回收呢?
要求在test List 上做一點手腳, 繼承一個ArrayList, 覆蓋它的get(i)方法
例如:
class TestArrayList extends ArrayList {
/*
* (non-Javadoc)
*
* @see java.util.List#get(int)
*/
public Object get(int index) {
while (index >= size()) {
add(new SubTestBean());
}
return super.get(index);
}
}
然後我們把TestBean中的 private List test = new ArrayList();
替換為 private List test = new TestArrayList ();
這樣就能自動收集了.