2011-02-01 79 views
1

我有一个复杂的对象,是由许多另一种类型的对象组成的。作为一个例子,我们假设我有一个用户类型,并且每个用户对象包含许多地址实例。地址包含房屋号码(int)和街道名称(字符串)。我想制作一个表单来编辑该用户对象及其所有地址。我怎么做?我知道如果用户有一个地址,我会怎么做。它看起来像下面这样(假设适当的getter和setter):Struts2 - 编辑复合对象

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

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

奇妙的是,用户对象将与新的门牌号码提交。但是,如何编辑上面列举的对象集合?我是否必须在某处更改输入标签的名称,并在用户类型上使用一些特殊名称的setter?

回答

1

如果setters target是一个列表或数组,您可以发送多个具有相同名称的参数,并将它们添加到列表中。如果有意义的话,你也可以使用数组符号插入特定位置。

作为一个例子,这应该工作:

user[x].address[y].houseNumber 

如果目标是一个地图,则x和y都必须是合适的密钥。更少的东西你在JSP中使用什么来访问嵌套组件。