首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Java_Struts2_Struts2中交付List数据

2012-10-21 
Java_Struts2_Struts2中提交List数据在JavaEye论坛中看到jiangweilou提问“Struts2中多行数据怎么提交”,mci

Java_Struts2_Struts2中提交List数据
在JavaEye论坛中看到jiangweilou提问“Struts2中多行数据怎么提交”,mcikevin的回答。



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

热点排行