2012-09-26 124 views
0

我想使用JSTL 1.2 例如拆分給定的字符串:JSTL分割功能

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

可能重複的[如何在JSTL中正確拆分字符串?](http://stackoverflow.com/questions/10304084/how-to-correctly-split-strings-in-jstl) –

+0

@JBNizet:對於延遲因爲我試圖編輯我的帖子。因爲我只是試圖在sov中添加一篇文章,我發現它很困難。 – user292049

回答

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> 

更好的解決方案是簡單地做工作,在應用程序的後端,並通過字符串列表的前端。

+0

太棒了!我認爲fn:split()將以與String split()相同的方式工作。感謝您解決問題。 – user292049

+0

你能否澄清 ${url}之間的差異 – user292049

+0

''會轉義像'&','<' and '>'這樣的字符。 –