У меня проблемы с использованием преобразования типов в struts 2 для преобразования коллекции bean-компонентов. я следующий класс действий:стойки 2 тип сбора информация об изменении проблема
@Validation()
@Conversion()
public class HelloWorldAction extends ActionSupport {
private List<HelloBean> helloBeans = new ArrayList<HelloBean>();
public String execute() throws Exception {
System.out.println(helloBeans);
return SUCCESS;
}
public List<HelloBean> getHelloBeans() {
return helloBeans;
}
@TypeConversion(rule = ConversionRule.COLLECTION, converter = "foo.HelloBean")
public void setHelloBeans(List<HelloBean> helloBeans) {
this.helloBeans = helloBeans;
}
}
и мой класс боба:
public class HelloBean {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
и мой JSP файл:
<s:form action="helloWorld">
<s:textfield name="helloBeans.name" label="name1"/>
<s:textfield name="helloBeans.name" label="name2" />
<s:textfield name="helloBeans.age" label="age1"/>
<s:textfield name="helloBeans.age" label="age2"/>
<s:submit />
</s:form>
Когда процесс был представлен, распорки всегда дают мне 4 объект, а не 2 объекта внутри коллекции. Я знаю, что другое обходное решение, использующее индекс в свойстве, решит проблему, но для моего случая мне нужна коллекция, чтобы быть динамичной. Есть ли способ решить эту проблему?
Я пробовал другие аннотацию, а также:
@Element(value =foo.HelloBean.class)
@CreateIfNull(value = true)
@KeyProperty(value = "name")
private List<HelloBean> helloBeans = new ArrayList<HelloBean>();
, но ни один из них не работал
FYI: Вам не нужно инициализировать helloBeans в вашем действии. Ваш сеттер сделает это. –