Я пытаюсь обработать список с помощью jstl. Я хочу рассматривать первый элемент списка по-другому, чем остальные. А именно, я хочу только, чтобы первый элемент имел набор дисплея для блокирования, остальные должны быть скрыты.
То, что я имею, кажется чрезмерно увеличенным в размерах, и не работает.
Спасибо за любую справку.
<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>
Это можно сделать еще короче, без
:
<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
<table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}>
</c:forEach>
Да, объявите varStatus = "stat" в элементе foreach, чтобы вы могли спросить его, первый или последний. Это переменная типа LoopTagStatus.
Это документ для LoopTagStatus: http://java.sun.com/products/jsp/jstl/1.1/docs/api/javax/servlet/jsp/jstl/core/LoopTagStatus.html У него более интересные свойства ...
<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>
Отредактировано: скопировано из axtavt
Это можно сделать еще короче, без
:
<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
<table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}>
</c:forEach>