2011-02-01 3 views
1

У меня есть сложный объект, который состоит из многих объектов другого типа. В качестве примера предположим, что у меня есть тип пользователя, и каждый объект User содержит много экземпляров адресов. Адрес содержит номер дома (int) и название улицы (String). Я хотел бы сделать одну форму для редактирования этого пользовательского объекта и всех его адресов. Как мне это сделать? Я знаю, как бы это сделать, если у Пользователя был один адрес. Это будет выглядеть примерно следующим (предполагается, что соответствующие методы получения и установки):Struts2 - Edit Composite Object

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

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

Волшебно, объект пользователя будет представлен с новым номером дома. Но как это работает при редактировании коллекций объектов, как я уже перечислил выше? Нужно ли мне менять имя входного тега где-нибудь и иметь какой-то специально названный сеттер в типе пользователя?

ответ

1

Если целевой сеттер представляет собой список или массив, вы можете отправить несколько параметров с тем же именем, и они будут добавлены в список. Вы также можете использовать нотацию массива для вставки в определенном месте, если это имеет смысл.

В качестве примера, это должно работать:

user[x].address[y].houseNumber 

Если цель является отображение, то х и у, должны быть соответствующие клавиши. Более менее то, что вы используете в JSP для доступа к вложенным компонентам, относится к форме.