Galera, estou tentando fazer o seguinte. Iterar sobre uma coleção, só que pular o primeiro resultado válido.
Tentei isso:
<c:set var="proxParValido" value="1" />
<c:forEach var ="paragrafo" items="${sala.texto.paragrafos}">
<c:if test="${not empty paragrafo.conteudoAtual}" >
<c:if test="${proxParValido ne 1}" >
<option value='${paragrafo.id}'>ant.<fmt:formatNumber value="${proxParValido}" pattern="000" groupingUsed="false" /></option>
<c:set var="proxParValido" value="${proxParValido+1}" />
</c:if>
</c:if>
</c:forEach>
A variável proxParValido, que está sendo atualizada normalmente se eu tirar o segundo c:if, mas a condição proxParValido ne 1 parece nunca ser satisfeita… já tentei usar o !=, colocar dentro do primeiro if com um and (essa aliás foi a primeira tentativa), mas nada funciona.
Idéias?
Valeu.
proxParValido é de qual tipo? Ele tem um equals pra String?
Quando vc usa o logic:iterate do struts ele tem uma propriedade offset que para o seu caso seria só setar para 1.
A iteração começa a partir do valor do offset, que normalmente é 0.
Veja se não há nada parecido no jstl.
[quote=Bjornn Borg]Quando vc usa o logic:iterate do struts ele tem uma propriedade offset que para o seu caso seria só setar para 1.
A iteração começa a partir do valor do offset, que normalmente é 0.
Veja se não há nada parecido no jstl.[/quote]
Tem sim, o varStatus.count, mas acontece que eu não quero contar todos os elementos da lista. Somente aqueles que atenderem a condição do primeiro if (parágrafo não vazio) , por isso eu faço um contador separado, que só é incrementado quando essa condição é satisfeita.
O problema não é com o incremento, mas com o teste, já que o primeiro elemento válido (parágrafo não vazio) eu não quero que seja impresso. Se não eu puser a condição, todos são impressos, se puser, nenhum elemento é impresso.
Valeu.
É um contador (inteiro) imagino que o próprio jstl faça a conversão para Integer e a comparação com String… ou não???