Non ottenere l '"indice " valore da for loop a if loop in JSP
Domanda
La mia istruzione if valuta sempre false e non inserisce il blocco < span >
. Per questo motivo, non sono in grado di ottenere il valore di " index " nella condizione if, ho provato di tutto aggiungendo l'indice con # e%. Qualcuno può suggerire la soluzione?
<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>
Soluzione
capito, in realtà è un conflitto nei tag
dovrebbe essere come
<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>
Altri suggerimenti
Il conflitto è quello al primo post stai mescolando
- Tag JSTL (the c: forEach)
- Tag Struts (i s: if)
La soluzione proposta funziona perché ora hai
- Tag JSTL (the c: forEach)
- Tag JSTL di nuovo (il c: quando)
Un'altra buona soluzione sarebbe
- Tag Struts (the s: iterator)
- Ancora tag Struts (i s: if)
In generale, usando i tag di più tecnologie dovrebbe essere problematico.
usa
test="${index == 1}"
o prova a usare l'attributo varStatus così ...
<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>
Il valore del test non è valutabile, è solo una stringa per la pagina.
Modifica, hai usato la sintassi di strut.
Aggiungi "% {} " ;, in questo modo:
<s:if test="%{index == 1}">