【问题标题】:JSTL x:forEach comma-separated outputJSTL x:forEach 逗号分隔输出
【发布时间】:2011-07-14 01:24:07
【问题描述】:

我有一个包含以下内容的 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

我使用&lt;x:forEach ..&gt; 没有任何问题,它会列出姓名并以特定作者结尾,但是如何获取逗号并检查列表长度?

【问题讨论】:

  • 你的意思是 XSLT 而不是 JSTL?
  • @krock: 不,它是JSTL XML taglib 您确实很少看到这种情况,因为在视图端解析 XML 被认为是不好的做法 :)(就像 JSTL SQL taglib 一样)。悬停 JSTL 标记时,另请参阅 JSTL 信息页面。

标签: xml jsp foreach jstl


【解决方案1】:

varStatus 属性与end 属性结合使用。 varStatus 指的是一个本地的LoopTagStatus 实例,它提供了几个getter 方法,例如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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多