Struts2 - 编辑复合对象

时间:2011-02-01 01:18:34

标签: java forms struts2

我有一个复杂的对象,它由许多另一种类型的对象组成。举个例子,我假设我有一个User类型,每个User对象包含许多Address实例。地址包含门牌号(int)和街道名称(String)。我想创建一个表单来编辑该用户对象及其所有地址。我怎么做?如果用户有一个地址,我知道如何做到这一点。它看起来像下面这样(假设适当的吸气剂和设定者):

//In the JSP
<s:textfield name="user.address.houseNumber/>

//In the Action
void setUser(User user) {...}

奇怪的是,User对象将与新的门牌号一起提交。但是,在编辑上面列举的对象集合时,这是如何工作的?我是否必须在某处更改输入标记的名称,并在用户类型上添加一些特别命名的setter?

1 个答案:

答案 0 :(得分:1)

如果setter目标是一个列表或数组,您可以发送多个具有相同名称的参数,它们将被添加到列表中。如果有意义,您还可以使用数组表示法插入特定位置。

例如,这应该有效:

user[x].address[y].houseNumber

如果目标是地图,那么x和y必须是合适的密钥。您在JSP中使用的更多内容来访问嵌套组件的内容。