JSTL x: forEach вывод через запятую - PullRequest
2 голосов
/ 12 марта 2011

У меня есть XML-файл со следующим содержимым:

<authors>
    <author>name 1</author>
    <author>name 2</author>
    <author>name 3</author>
</authors>

, и я хотел бы проанализировать его с помощью JSTL в виде списка:

name1, name2, name3

и,если их больше 3:

name1, name2, name3 et. al

У меня нет проблем с использованием <x:forEach ..>, который выдает имена и заканчивается конкретным автором, но как получить запятые и проверить наличиедлина списка?

1 Ответ

8 голосов
/ 12 марта 2011

Используйте атрибут varStatus в сочетании с атрибутом end.varStatus относится к локальному экземпляру LoopTagStatus, который предлагает несколько методов получения, таких как getIndex() и isLast().Атрибут end указывает индекс, где должна заканчиваться итерация.

<x:forEach select="..." var="author" varStatus="loop" end="3">
    <c:if test="${loop.index lt 3}">${author}</c:if>
    <c:if test="${loop.index lt 2 and not loop.last}">,</c:if>
    <c:if test="${loop.index eq 3}">et. al</c:if>
</x:forEach>
...