java - jtls - JSTL: itera la lista pero trata el primer elemento de manera diferente
libreria core (2)
Sí, declare varStatus = "stat" en el elemento foreach, así que puede preguntarle si es el primero o el último. Es una variable de tipo LoopTagStatus.
Este es el documento para LoopTagStatus: http://java.sun.com/products/jsp/jstl/1.1/docs/api/javax/servlet/jsp/jstl/core/LoopTagStatus.html Tiene propiedades más interesantes ...
<c:forEach items="${learningEntry.samples}" var="sample" varStatus="stat">
<!-- only the first element in the set is visible: -->
<c:if test="${stat.first}">
<table class="sampleEntry">
</c:if>
<c:if test="${!stat.first}">
<table class="sampleEntry" style="display:none">
</c:if>
Editado: copiado desde axtavt
Se puede hacer incluso más corto, sin <c:if>
:
<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
<table class="sampleEntry" ${status.first ? '''' : ''style = "display:none"''}>
</c:forEach>
Estoy tratando de procesar una lista usando jstl. Quiero tratar el primer elemento de la lista de manera diferente al resto. Es decir, quiero que solo el primer elemento tenga la pantalla configurada para bloquear, el resto debe estar oculto.
Lo que tengo parece hinchado, y no funciona.
Gracias por cualquier ayuda.
<c:forEach items="${learningEntry.samples}" var="sample">
<!-- only the first element in the set is visible: -->
<c:if test="${learningEntry.samples[0] == sample}">
<table class="sampleEntry">
</c:if>
<c:if test="${learningEntry.samples[0] != sample}">
<table class="sampleEntry" style="display:hidden">
</c:if>
Se puede hacer incluso más corto, sin <c:if>
:
<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
<table class="sampleEntry" ${status.first ? '''' : ''style = "display:none"''}>
</c:forEach>