Заполнение коллекции из отправки формы Struts2

Я пытаюсь заполнить список bean-компонентов из формы:

public class Foo {
   public String attr1;
   public String attr2;
}

public class Bar {
   public List<Foo> foos;
}

public class StrutsAction extends Action {
   public Bar bar;
}

Итак, в моей форме Struts2, как лучше заполнить Foo? Интуитивно я хочу сделать:

<input type="hidden" name="bar.foos.attr1" />

но это не работает и может привести к коллизиям. Я уверен, что ответ очень прост, и я пропускаю его.


person Droo    schedule 10.06.2009    source источник


Ответы (1)


Если я правильно понимаю, вам просто нужно другое имя для каждого скрытого поля?

<s:iterator value="bars" status="key">
    <s:hidden name="bar.foos[%{#key.index}].attr1" value="attr1" />
    <s:hidden name="bar.foos[%{#key.index}].attr2" value="attr2" />
</s:iterator>

который должен дать вам эквивалент

<input type="hidden" name="bar.foos[0].attr1" value="some value" />
<input type="hidden" name="bar.foos[0].attr2" value="some other value" />
<input type="hidden" name="bar.foos[1].attr1" value="some value" />
<input type="hidden" name="bar.foos[1].attr2" value="some other value" />

Если у вас есть правильный геттер/сеттер, он должен установить все значения при отправке формы.

person Roy Chan    schedule 10.06.2009
comment
Вы правы, сэр. Я полагаю, что просто не знал правильного синтаксиса (то есть [0]). - person Droo; 10.06.2009
comment
Спасибо...! мне тоже помогло...(даже спустя 2 года :-P) - person Karthikeyan Arumugam; 24.04.2013