2017-04-20 8 views
0

私は分割WRT .よどのimageUrl変数と次のように配列imageUrlPartsに保存する必要があり:jstlの配列の特定のインデックスに値を割り当てる方法はありますか?

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

を、私はちょうどそれの最後から二番目のトークンにもっと何かを追加したいと思います。たとえば、URLが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自体と次の行

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

であることを意味するませa.b.cSOMETHINGADDED.d、としてそれを再構築された、のようにそれは、動作していません(もちろん)働かない。私がしたいことをどのように達成すべきか教えていただけますか?

ヘルプの任意の種類は非常にいただければ幸いです。

答えて

0

ここにデモンストレーションコードがあります。最初の行を使いたくない場合は、forEachタグコードを1行に入れなければなりません。それは出力文字列内のスペースを避けるでしょう。

<%@ 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> 
関連する問題