Não obtendo o valor do 'índice "do loop para o loop if no JSP
Pergunta
Minha declaração IF está sempre avaliando para falsa e não entrando no <span>
quadra. Por esse motivo, não consigo obter o valor de "índice" na condição IF, tentei tudo o que anexava Índice com # e %. Alguém pode sugerir a solução?
<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>
Solução
Consegui atualmente, é algum conflito nas tags
deve ser como
<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>
Outras dicas
O conflito é que, no primeiro post, você está misturando
- Tags jstl (o c: foreach)
- Tags de suporte (o s: se)
Sua solução proposta funciona porque você agora tem
- Tags jstl (o c: foreach)
- JSTL tags novamente (o C: quando)
Outra boa solução seria
- Tags de suporte (o s: iterator)
- Tags de suporte novamente (o s: se)
De um modo geral, espera -se que o uso de tags de várias tecnologias seja problemático.
usar
test="${index == 1}"
Ou tente usar o atributo varstatus então ...
<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>
O valor do teste não é avaliado, é apenas uma string para a página.
Editar, você usa a sintaxe do Strut.
Adicione "%{}", assim:
<s:if test="%{index == 1}">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow