Ne pas obtenir l'index " valeur de boucle for à la boucle if dans le fichier JSP
Question
Mon instruction if est toujours évaluée à false et n'entre pas dans le bloc < span >
. Pour cette raison, je ne parviens pas à obtenir la valeur de " index " dans la condition if, j'ai tout essayé en ajoutant un index avec # et%. Quelqu'un peut-il suggérer la solution?
<c:forEach var="index" begin="1" end="<%=a%>" step="1">
<s:if test="index == 1">
<span class="currentpage"><b>${page_id}</b></span>
</s:if>
<s:else>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</s:else>
</c:forEach>
La solution
il a en fait il est un conflit dans les balises
cela devrait être comme
<c:forEach var="index" begin="1" end="<%=a%>" step="1" varStatus="status">
<c:choose>
<c:when test="${page_id==index}">
<span class="currentpage"><b>${page_id}</b></span>
</c:when>
<c:otherwise>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</c:otherwise>
</c:choose>
</c:forEach>
Autres conseils
Le conflit est que dans le premier post vous mélangez
- balises JSTL (le c: forEach)
- Tags Struts (le s: if)
Votre solution proposée fonctionne car vous avez maintenant
- balises JSTL (le c: forEach)
- balises JSTL à nouveau (le c: quand)
Une autre bonne solution serait
- Tags Struts (le s: itérateur)
- Struts à nouveau (le s: if)
De manière générale, en utilisant des tags issus de plusieurs technologies devrait être problématique.
utiliser
test="${index == 1}"
ou essayez d'utiliser l'attribut varStatus afin ...
<c:forEach var="index" varStatus="status" begin="1" end="<%=a%>" step="1">
<s:if test="${status.count == 1}">
<span class="currentpage"><b>${page_id}</b></span>
</s:if>
<s:else>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</s:else>
</c:forEach>
La valeur de test n'est pas évaluable, c'est simplement une chaîne de caractères pour la page.
Modifiez, vous utilisez la syntaxe de strut.
Ajouter "% {}", comme suit:
<s:if test="%{index == 1}">