0

jstl 1.2を使用して特定の文字列を分割したかった例:

Bean thesis.url contains "http:website1.com : http:website2.com"
which needs to be splited into
http:website1.com
http:website2.com

<c:set var="url">
  <c:out value="${thesis.url}" />
</c:set>  

<c:set var="offUrls" value="${fn:split(url,' : ')}" />
<c:forEach items="${offUrls}" var="link">
    <a href=" <c:out value='${link}' />" target="_blank">
        <c:out value="${link}" />
    </a>
</c:forEach>

しかし、出力は必要ありません
。httpwebsite1.comhttpwebsite2.com
です

私は別の方法を試しましたが、その方法もうまくいきました。
<c:set var="_split" value= " : "/>
<c:set var="offUrls" value="${fn:split(url,_split)}" />

4

1 に答える 1

4

fn:split文字列を任意の区切り文字で分割するため、この場合はスペースと。の両方になり:ます。解決策は、fn:replace最初に行うことです。

<c:set var="urls" value="http://website1.com : http://website2.com"/>
<c:set var="urls" value="${fn:replace(thesis.url, ' : ', '|')}"/>

区切り文字を文字列に存在しない文字に置き換えてください。そうしないと、同じ問題が発生します。これで、を使用できますが、使用するfn:split(urls, '|')方が簡単です<c:forTokens/>

<c:forTokens items="${urls}" delims="|" var="url">
  <a href="${url}">${url}</a>
</c:forTokens>

より良い解決策は、アプリケーションのバックエンドで作業を行い、文字列のリストをフロントエンドに渡すことです。

于 2012-09-26T17:11:28.573 に答える