ChatGPT解决这个技术问题 Extra ChatGPT

jstl foreach 省略最后一条记录中的元素

试图使用这个 jstl 来制定一个 json 字符串,我怎样才能使该段不在最后一条记录的末尾放置逗号?注意最后的逗号

<c:forEach items="${fileList}" var="current">
    { id:1001,data:["<c:out value="${current.fileName}" />" , "<c:out value="${current.path}" />" , "<c:out value="${current.size}" />" , "<c:out value="${current.type}" />"] },
</c:forEach>
所有元素都需要 } 但最后一个不能有逗号,

B
BalusC

只需使用 LoopTagStatus#isLast()

<c:forEach items="${fileList}" var="current" varStatus="loop">
    { id: 1001,
      data: [
        "<c:out value="${current.fileName}" />",
        "<c:out value="${current.path}" />",
        "<c:out value="${current.size}" />",
        "<c:out value="${current.type}" />"
      ]
    }<c:if test="${!loop.last}">,</c:if>
</c:forEach>

您还可以在 EL 中使用条件运算符代替 <c:if>

    ${!loop.last ? ',' : ''}

+1。比我的更好的解决方案。 @nokheat:您应该将此标记为已接受的答案。
C
Community

我从不喜欢 JSTL 的一件事(实际上我认为是唯一的 :))是没有办法检索列表/集合的大小。

编辑: 好的,所以这是可能的,但我不知道 :( see here.

forEach 标记具有 varStatus 属性,可用于确定行的索引(varStatus 变量的 index/count 属性),但您必须测试您是否位于最后一个位置在列表中,这意味着事先拥有列表大小:

<c:forEach items="${fileList}" var="current" varStatus="status">
   ...
  <c:if test="${not (status.count eq listSize)}">,</c:if>
</c:forEach>

但在执行此类操作之前,您必须手动将 listSize 置于范围内。

我在我的一个项目中所做的是为自己创建一个标签,该标签接受一个集合并返回值:

  <myLib:collectionSize collection="${fileList}" var="listSize" />
  <c:forEach items="${fileList}" var="current" varStatus="status">
     ...
    <c:if test="${not (status.count eq listSize)}">,</c:if>
  </c:forEach>

如果你经常有这种代码,你可以做同样的事情(否则你可以用你方便的任何东西将它添加到范围内)。


经过快速搜索,我发现了这个:stackoverflow.com/questions/851880/…。也许它可以帮助你更多。
由于列表对象有一个 size() 函数,我可以使用 list.size 让它看起来更优雅吗?
JSTL 主要用于访问器字段“getProp”和“setProp”,在您的 JSP 中您将使用“prop”。如果列表有一个名为“getSize”的方法,但 id 没有,你可以做“list.size”,它只有“size”。
@nokheat:BalusC 为您的帖子提供了更清洁的解决方案。去找他的回应。
C
Community

Check a collection size with JSTL 的答案是使用函数标签

将其放在页面顶部以允许 fn 命名空间

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

并在你的jsp页面中这样使用

<p>The length of the companies collection is : ${fn:length(companies)}</p>

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅