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>

但输出不是我想要的
http
website1.com
http
website2.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 回答