Struts2中實(shí)現(xiàn)可編輯的表格
Posted on 2008-02-12 21:06 云自無心水自閑 閱讀(3276) 評(píng)論(2) 編輯 收藏 所屬分類: Java 、心得體會(huì) 、Struts2Struts2中支持使用List在頁面和Action之間直接傳遞表格數(shù)據(jù)。下面是一個(gè)示例:
public class Person {
int id;
String name;
int age;
float height;
}
public class MyAction {
public List getPeopleList() { … }
public void setPeopleList( List peopleList ) { … }
…
}
在我們使用Person類之前,需要添加一個(gè)配置文件,MyAction-conversion.properties,把這個(gè)文件和MyAction放在一起。
這個(gè)文件里只有一行內(nèi)容:
Element_peopleList=Person
前綴Element_是一個(gè)常量,表明等號(hào)左邊的表達(dá)式中跟在這個(gè)常量后面的是Action類中一個(gè)List類型的字段名。
等號(hào)右邊的表達(dá)式是全類名(包含package)
下面是一個(gè)頁面的代碼片段:
<s:form action="update" method="post" >
<s:iterator value="peopleList" status="stat">
<s:hidden
name="peopleList[%{#stat.index}].id"
value="%{peopleList[#stat.index].id}"/>
<s:textfield label="Name"
name="peopleList[%{#stat.index}].name"
value="%{peopleList[#stat.index].name}"/>
<s:textfield label="Age"
name="peopleList[%{#stat.index}].age"
value="%{peopleList[#stat.index].age}" />
<s:textfield label="Height"
name="peopleList[%{#stat.index}].height"
value="%{peopleList[#stat.index].height}"/>
<br/>
</s:iterator>
<s:submit value="Update"/>
</s:form>
使用這段代碼,Struts2會(huì)創(chuàng)建一個(gè)Person類的ArrayList,并且用setPersonList這個(gè)方法把頁面表格中的值傳遞回Action。
如果你是想從用戶界面中動(dòng)態(tài)創(chuàng)建列表值,需要允許Struts2給列表中類的實(shí)例。那么在配置文件MyAction-conversion.properties中添加一行:
CreateIfNull_peopleList = true






這是一個(gè)POJO,getter和setting省略了。
action中可以這樣使用:





這個(gè)文件里只有一行內(nèi)容:
Element_peopleList=Person
前綴Element_是一個(gè)常量,表明等號(hào)左邊的表達(dá)式中跟在這個(gè)常量后面的是Action類中一個(gè)List類型的字段名。
等號(hào)右邊的表達(dá)式是全類名(包含package)
下面是一個(gè)頁面的代碼片段:


















使用這段代碼,Struts2會(huì)創(chuàng)建一個(gè)Person類的ArrayList,并且用setPersonList這個(gè)方法把頁面表格中的值傳遞回Action。
如果你是想從用戶界面中動(dòng)態(tài)創(chuàng)建列表值,需要允許Struts2給列表中類的實(shí)例。那么在配置文件MyAction-conversion.properties中添加一行:
CreateIfNull_peopleList = true