我想将两个对象合并为一个变量。对象看起来像这样
{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中是否存在某种类型的数组推送方法我可以用来组合这两个名称,然后在循环中的最后一个之间添加一个逗号。
答案 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>