使用带有JSP

时间:2016-08-02 21:03:23

标签: jsp jstl

我想将两个对象合并为一个变量。对象看起来像这样

{name: "James", type: "author"}, {name: "Amelia", type: "author"}

可以通过我的JSP中的${global.content.credits.by}访问它们。我要做的是从列出的每个对象中获取两个名称,以便在调用James, Amy变量时看起来像${authorNames}(列表中的最后一项没有尾随逗号)。

我尝试过以下方法:

<c:forEach items="${global.content.credits.by}" var="author" varStatus="loop">
   <c:set var="authorNames" value="${author.name}" />
</c:forEach>

但是,我可以获得所有作者名称的唯一方法是在循环内,在循环之外,$ {authorNames}变量在每次迭代时都会被覆盖。

在JSP中是否存在某种类型的数组推送方法我可以用来组合这两个名称,然后在循环中的最后一个之间添加一个逗号。

1 个答案:

答案 0 :(得分:2)

您可以将名称附加到authorNames,而不是覆盖它。

<c:forEach items="${global.content.credits.by}" var="author" varStatus="loop">
   <c:if test="${loop.index == 0}>
     <c:set var="authorNames" value="${author.name}" />
   </c:if>
   <c:if test="${loop.index != 0}>
     <c:set var="authorNames" value="${authorNames},${author.name}" />
   </c:if>
</c:forEach>