J'ai du mal à utiliser la conversion de type dans Struts 2 pour convertir la collection de haricots. J'ai suivant la classe d'action:Problème de conversion du type de collection Struts 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;
}
}
et ma classe de haricots:
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;
}
}
et mon fichier 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>
Lorsque le processus a été soumis, Struts me donnent toujours 4 objet, au lieu de 2 objet à l'intérieur de la collection. Je sais qu'une autre solution de contournement utilisant l'index dans la propriété résoudra le problème, mais pour mon cas j'ai besoin que la collection soit dynamique. Est-il possible de résoudre ce genre de problème?
J'ai essayé d'autres annotations ainsi:
@Element(value =foo.HelloBean.class)
@CreateIfNull(value = true)
@KeyProperty(value = "name")
private List<HelloBean> helloBeans = new ArrayList<HelloBean>();
mais aucun d'entre eux a travaillé
FYI: Vous n'avez pas besoin d'initialiser helloBeans dans votre action. Votre setter fera cela. –