【问题标题】:How can I concatenate a string within a loop in JSTL/JSP?如何在 JSTL/JSP 的循环中连接字符串?
【发布时间】:2011-02-02 07:13:51
【问题描述】:
<c:forEach items="${myParams.items}" var="currentItem" varStatus="stat">
  <c:set var="myVar" value="<c:out var="myVar" />" />
</c:forEach>

我想连接 currentItem.myVar 的值并在循环结束时输出,问题是我不知道该怎么做...

(最好不要使用Java)

【问题讨论】:

    标签: java string jsp loops concatenation


    【解决方案1】:

    使用 JSP 标签定义一个字符串变量

    <%!
    String test = new String();
    %>
    

    然后在循环中将该变量称为

    <c:forEach items="${myParams.items}" var="currentItem" varStatus="stat">
    test+= whaterver_value
    </c:forEach>
    

    【讨论】:

    • 使用Java不是解决这个问题的方法,我想我需要使用JSTL
    • 对于 new String() 几乎是 -1。 “”怎么样?
    • Thilo 是的,我理解 new String()。我的错!
    【解决方案2】:

    也许这会起作用?

    <c:forEach items="${myParams.items}" var="currentItem" varStatus="stat">
      <c:set var="myVar" value="${stat.first ? '' : myVar} ${currentItem}" />
    </c:forEach>
    

    【讨论】:

    • 这个没问题,除了第一个值为空
    • 好的,我添加了一个检查,看看它是否是第一次通过循环。这行得通吗?
    • 您可以使用相同的概念来连接带有分隔符的字符串,如下所示:value="${ids}${stat.first ? '' : ','}${currentItem.id}"
    【解决方案3】:

    您使用的是 JSTL 2.0 对吗?您不需要在所有变量周围加上&lt;c:out/&gt;。你有没有尝试过这样的事情?

    <c:forEach items="${myParams.items}" var="currentItem" varStatus="stat">
      <c:set var="myVar" value="${myVar}${currentItem}" />
    </c:forEach>
    

    编辑:被上面打败了

    【讨论】:

    • 这个没问题,除了第一个值为null =/
    • 第一个值为 null:只需在循环外执行另一个 c:set 即可初始化 myVar。
    • 那么也许将 set 标签包装在 if 中? ... ?
    • EL 不会将 null 值评估为 "null" 字符串。问题出在其他地方。它显然被错误地设置为"null" 字符串。
    • 感谢 Ben 和 @Subin,它为我节省了很多时间。
    【解决方案4】:

    是JSTL的join(),你搜索的是什么?

    <c:set var="myVar" value="${fn:join(myParams.items, ' ')}" />
    

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2015-12-16
      相关资源
      最近更新 更多