struts2页面向action提交list对象
Struts2中支持使用List在页面和Action之间直接传递表格数据。下面是一个示例: public class Person { int id; String name; int age; float height; }
这是一个POJO,getter和setting省略了。
action中可以这样使用: public class MyAction { public List getPeopleList() { … } public void setPeopleList( List peopleList ) { … } … } 在我们使用Person类之前,需要添加一个配置文件,MyAction-conversion.properties,把这个文件和MyAction放在一起。 这个文件里只有一行内容: Element_peopleList=Person 前缀Element_是一个常量,表明等号左边的表达式中跟在这个常量后面的是Action类中一个List类型的字段名。 等号右边的表达式是全类名(包含package) 下面是一个页面的代码片段: <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会创建一个Person类的ArrayList,并且用setPersonList这个方法把页面表格中的值传递回Action。 如果你是想从用户界面中动态创建列表值,需要允许Struts2给列表中类的实例。那么在配置文件MyAction-conversion.properties中添加一行: CreateIfNull_peopleList = true
|