2017-04-20 73 views
0

我有我分裂WRT .和数组imageUrlParts作为存储变量imageUrl如下:如何为jstl中的数组的特定索引分配一些值?

<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本身a.b.cSOMETHINGADDED.d,这意味着以下行

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

是不工作(当然)。你能告诉我应该如何实现我想做的事情吗?

任何形式的帮助将不胜感激。

回答

0

这里是演示代码。如果您不想使用第一行,那么您必须将forEach标记码放在一行上。这将避免输出字符串中的空格。

<%@ 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> 
相关问题