24

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>
4

2 に答える 2

53

なしで、さらに短くすることができます<c:if>

<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
    <table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}> 
</c:forEach> 
于 2010-01-07T02:13:25.660 に答える
5

はい、foreach 要素で varStatus="stat" を宣言すると、最初か最後かを尋ねることができます。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:if>

<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status">
    <table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}> 
</c:forEach> 
于 2010-01-07T02:12:07.397 に答える