<html:select> dans un <logic:iterate>
J'ai un itemList
et pour chaque item
, une liste déroulante des cotes est affiché. Après que l'utilisateur les taux de chaque item
dans itemList
, je veux stocker ces taux dans un tableau. Comment puis-je le faire? selectedRate
ci-dessous est de Integer
type, et le code a échoué à résoudre le problème.
<logic:iterate id="item" name="itemList">
<tr>
<td>
<html:select name="aForm" property="selectedRate">
<html:optionsCollection name="allRates" label="description" value="value" />
</html:select>
</td>
</tr>
</logic:iterate>
Vous devez vous connecter pour publier un commentaire.
Chaque
select
option doit être associé à un élément spécifique.La façon la plus simple est d'utiliser un ensemble de
Item
s, et de donner à chaqueItem
unrating
de la propriété. J'ai utilisé unInteger
pour cet exemple.La
<html:select>
utilise la notation de tableau, et directement définit chaque élément de la notation. (Je suis en utilisant une liste de tarifs à partir de la forme elle-même, et une simplification de la mise en page, ignorer ces différences.)L'action accède à l'élément de la notation, comme nous nous attendons à:
Si les articles ne sont pas associés à une notation, vous aurez besoin d'utiliser une carte de l'id de l'élément clés et les valeurs de classement. C'est plus complexe; je vous recommande une collection.
Tout d'abord, la carte sera
Map<String, Object>
en raison de la manière indexée travail de propriétés. En plus d'une normale de lecture de la carte elle-même, fournir indexé méthodes:La JSP sera similaire, mais l'utilisation
"()"
au lieu de"[]"
à utiliser indexée méthodes de formulaire.Lorsque le formulaire est soumis, le
itemRatings
carte contient des clés de chaîne représentant de chaque élément d'ID. À la fois la clé et la valeur seraString
s, et vous aurez besoin de faire des conversions de valeurs numériques manuellement.