我想使用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)}" />
答案 0 :(得分: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>
更好的解决方案是简单地在应用程序的后端完成工作,并将字符串列表传递给前端。