POST un tableau d'objets personnalisés pour une action Struts 2
Comment puis-je publier un tableau d'objets personnalisés pour un Struts 2 action en Java?
Par exemple, si j'ai le texte suivant objet Java:
public class Person {
private String name;
private String lastName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Et l'Action suivante:
public class SavePersons extends ActionSupport {
private List<Person> persons;
@Override
public String execute() throws Exception {
//Do something
return SUCCESS;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
}
J'aimerais faire quelque chose comme cela dans un formulaire HTML:
<html>
<body>
<form method="POST" action="http://postHere">
<input type="text" name="persons[0].name" value="Name1"/>
<input type="text" name="persons[0].lastName" value="LastName1"/>
<input type="text" name="persons[1].name" value="Name2"/>
<input type="text" name="persons[1].lastName" value="LastName2"/>
<input type="submit" />
</form>
</body>
</html>
Des conseils?
- Quaternion pour répondre à votre question. Et votre question est liée à Tableaux d'entrées de Struts2
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez l'air bon. Il ne fait pas une différence de struts2 si vous publiez ou obtenir autant que les valeurs de réglage.
À l'aide de la même SavePersons classe, sauf que j'ai ajouté un
public List<Person> getPersons()
méthode. Ceci est nécessaire pour rendre la solution de travail.Et en utilisant essentiellement la même forme, sauf que je préfère écrire mes formes à l'aide de s2 balises où il fait sens (ce qui met certaines personnes au large de la forme de balises est la valeur par défaut s2 thème, vous pouvez définir globalement le thème de la simple, l'étiquette d'attribut ne fonctionne pas mais l'INTERFACE utilisateur les balises de travail tout comme vous vous attendez à de semblables éléments html à se comporter):
Noter que method="post" n'est pas nécessaire, c'est la valeur par défaut.
Ici la page est utilisé pour afficher les données du formulaire.
Et il a très bien fonctionné.
getPersons
getter est obligatoire pour que votre solution fonctionne. En fait, le poseur de ne pas définir le personnes, la lecture sera utilisé pour obtenir la liste des personnes physiques et ensuite tous les éléments commencent à être rempli. En fait, j'ai passé plus de 4 heures hier (le dernier avec 4 de mes collègues) en essayant de comprendre pourquoi il ne fonctionne pas, votre réponse "getPersons est seulement à lire..." était trompeuse nous. Enfin, l'ajout de cette getter a résolu le problème.