如何在jstl中为数组的特定索引赋值?

时间:2017-04-20 12:16:35

标签: arrays string jsp split jstl

我有一个变量imageUrl我正在拆分wrt .并存储在数组imageUrlParts中,如下所示:

<c:set var="imageUrlParts" value="${fn:split(imageUrl, '.')}" />

现在,我只想在其后的第二个标记上添加更多内容。例如,如果网址为a.b.c.d,那么我想将其设为a.b.cSOMETHINGADDED.d。所以我正在做以下事情:

<c:set var="len" value="${fn:length(imageUrlParts)}" />
<c:set var="imageUrlParts[len-2]" value="${imageUrlParts[len-2]}SOMETHINGADDED" />
<c:set var="imageUrl" value="${fn:join(imageUrlParts, '.')}" />

但它不起作用,因为它正在将其重建为a.b.c.d本身和 NOT a.b.cSOMETHINGADDED.d,这意味着以下行

<c:set var="imageUrlParts[len-2]" value="${imageUrlParts[len-2]}SOMETHINGADDED" />

不起作用(当然)。你能告诉我如何实现我想做的事吗?

任何形式的帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

这是演示代码。如果您不想使用第一行,则必须将forEach标记代码放在一行上。这样可以避免输出String中的空格。

<%@ page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<c:set var="imageUrl" value="a.b.c.d" />
<c:set var="imageUrlParts" value="${fn:split(imageUrl, '.')}" />
<c:set var="len" value="${fn:length(imageUrlParts)}" />
<c:forEach var="part" items="${imageUrlParts}" varStatus="status">
    ${part}
<c:if test="${(len -1) == status.count}">SOMETHINGADDED</c:if>
<c:if test="${!status.last}">.</c:if>
</c:forEach>