Comment faire pour ajouter indice de boucle de c:forEach tag Struts balise HTML attributs?
Comment puis-je ajouter de l'indice de boucle de c:forEach tag les attributs d'un struts sélectionner/balise de texte?
Par exemple.
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
<c:forEach begin="2" end="${pageView.guestCount}" varStatus="gC">
<div class="section guest-details">
<html:select property='title_guest<c:out value="${gC.index}"/>'>
<html:options collection="titles" property="code" labelProperty="value" />
</html:select>
</div>
</c:forEach>
jette l'erreur suivante
javax.servlet.jsp.JspException at org.apache.struts.taglib.html.SelectTag.calculateMatchValues(SelectTag.java:246)
Maintenant, quand je déboguer le code à <html:select ...
il montre que lorsque l'attribut de propriété de ce jeu, son jeu comme "title_guest<c:out value="${gC.index}"/>"
qui pourrait être la cause de l'exception ci-dessus.
Aussi, je tiens à mentionner que si j'utilise le format ci-dessus pour l'ajout de la boucle de l'indice standard html attribut de balise comme un <select>
tag, le code fonctionne très bien.
Par exemple
<c:forEach begin="2" end="${pageView.guestCount}" varStatus="gC">
<div class="section guest-details">
<select name='title_guest<c:out value="${gC.index }"/>'>
<option value="">Select Title</option>
</select>
</div>
</c:forEach>
Correctement les résultats de la destinée HTML
Ce que je fais mal, dois-je utiliser EL pour créer la chaîne qui va remplir la "propriété" de l'attribut html:balise select?
Mise à JOUR
L'extrait suivant a également été essayé et cela ne fonctionne pas non plus
<html:select property="title_guest${gC.index}">
Et, ni fait ce travail
<c:set var="guestTitle">title_guest${gC.index}</c:set>
<html:select property="${guestTitle}" styleClass="{required: true}">
<html:options collection="titles" property="code" labelProperty="value" />
</html:select>
OriginalL'auteur Salman Paracha | 2011-05-11
Vous devez vous connecter pour publier un commentaire.
Après quelques douloureux de creuser autour, il me semblait avoir trouvé le problème et donc la solution. Le c:forEach balise de ne pas exporter la varStatus comme une variable de script et donc le varStatus variable ne peut pas être utilisé dans le RT Expr pour la propriété attribut de la html:sélectionnez tag.
Cependant, la c:forEach ne l'exportation de la varStatus variable comme un pageContext attribut, ce qui peut être récupéré et utilisé pour extraire l'index/count. Le seul hic, c'est que vous aurez à importer les javax.servlet.jsp.jstl.de base.LoopTagStatus classe et l'utiliser pour recréer manuellement les varStatus variable de sorte qu'il peut être utilisé à l'intérieur d'un scriplet
Voici l'extrait de code qui a travaillé
Je ne pense pas que c'est une solution propre (mais il pourrait être la seule solution). Donc, je vais laisser la communauté vote sur cette première réponse (ou d'écrire une meilleure réponse, avant même que je l'accepte comme la réponse finale.
OriginalL'auteur Salman Paracha
Qui serait une expression imbriquée, qui n'est pas autorisé, essayez d'utiliser ceci à la place
OriginalL'auteur Pål Brattberg
Ma façon
OriginalL'auteur a.k.a Mark