Je vais avoir cette question où j'ai généré dynamiquement des valeurs dans les entrées cachées comme ceci:Problème avec affichage arraylist propriétés indexées de jsp à la classe d'action
<div id="items-div" class="selection-div">
<input name="selectedItem[0].articleName" id="selectedItem" type="hidden" value="cereal"></input>
<input name="selectedItem[0].quantity" id="selectedItem" type="hidden" value="2"></input>
<input name="selectedItem[1].articleName" id="selectedItem" type="hidden" value="yogurt"></input>
<input name="selectedItem[1].quantity" id="selectedItem" type="hidden" value="10"></input>
</div>
J'append ces derniers aux éléments-div en utilisant jquery en fonction de ce que l'utilisateur choisit à l'écran, chacun de ces éléments est un élément.
public class Item {
private String articleName = "";
private int quantity = 0;
public String getArticleName() {
return articleName;
}
public void setArticleName(String articleName) {
this.articleName = articleName;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
Et ceci est la classe de forme qui a une ArrayList de ces articles
public class CreateArticleForm extends ActionForm {
private ArrayList<Item> selectedList = new ArrayList<Item>();
public Item getSelectedItem(int index) {
if (selectedList == null) {
selectedList = new ArrayList<Item>();
}
while (index >= selectedList.size()) {
selectedList.add(new Item());
}
return (Item) selectedList.get(index);
}
public ArrayList<Item> getSelectedList() {
return selectedList;
}
public void setSelectedList(ArrayList<Item> selectedList) {
this.selectedList = selectedList;
}
}
Et enfin la classe d'action
public class CreateArticleAction extends
Action {
public ActionForward executeAction(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response, User user)
throws Throwable {
CreateArticleForm articleForm = (CreateArticleForm) form;
//... do stuff
}
}
j'attendre à ce que le poste tout le serveur arrondissent en haut tous les selectedItem [X] et appelez le getSelectedItem pour construire l'arraylist et le peupler puis définissez les propriétés à chaque objet mais quand je soumets la page sur debug, je vois le selectedList arraylist co mes jusqu'à vide. J'utilise cette logique basée sur une affectation précédente où à la place les informations avec des propriétés indexées étaient générées au moment du chargement de la page puis imprimées avec une logique: itérer l'étiquette et chaque entrée avait une propriété indexée = "vrai", mais depuis dans ce cas c'est à partir de ce que l'utilisateur clique sur la page, j'utilise à la place jquery pour remplir le "items-div" avec ce que l'utilisateur est en train de choisir, mais ça devrait être pareil non? Est-ce que je manque quelque chose? Il fonctionnait auparavant très bien ... Merci pour votre temps. Ce qui précède fonctionne si je code en dur les entrées cachées dans la page jsp, il soumet celles-ci mais pas celles créées dynamiquement et ajoutées avec jquery.
$('.items-div').append($('<input/>').attr({
type : 'hidden', name: 'selectedItem['+index+'].articleName', id : 'selectedItem', value: objItem.articleName}));
Dans votre code généré, les identifiants doivent être uniques pour chaque élément de la page. En outre, les balises d'entrée n'ont pas de balises de fermeture séparées. – Bindrid
Merci! Je vais supprimer ces identifiants et voir si c'est ce qui l'empêche de fonctionner En ce qui concerne les entrées, j'ai remarqué cela aussi et cela m'a dérangé, étant donné que j'utilise le code ci-dessous pour ajouter ces entrées et elles devraient être affichées comme . mais quand je charge la page ils ressemblent à ça ... '$ ('div-sélection) append ($ (' ') .attr ({type' ' : 'caché', name: 'selectedItem [' + index + '] .nomUnion', id: 'selectedItem', valeur: objItem.articleName})); ' – Ricardo
Aucun dé, ne fonctionne actuellement que si je code en dur les entrées, mais pas avec celles ajoutées avec jquery ... – Ricardo