Struts2截取字符串代碼介紹
在開(kāi)發(fā)中,經(jīng)常會(huì)遇到字符串太長(zhǎng),需要適當(dāng)截取后再顯示的問(wèn)題,其實(shí)實(shí)現(xiàn)方式有幾種:
· 在后臺(tái)截取后之后再傳回頁(yè)面顯示
· 在頁(yè)面用標(biāo)簽或代碼實(shí)現(xiàn)
· 在前臺(tái)使用腳本來(lái)處理,此方法不推薦
· 通過(guò)樣式控制,增加overflow:ellipse等實(shí)現(xiàn),此方法也不推薦
· 其他方式
那么如何用struts2標(biāo)簽來(lái)截取字符串呢?網(wǎng)上對(duì)這一問(wèn)題眾說(shuō)紛紜,更有人說(shuō)根本不能實(shí)現(xiàn),其實(shí)實(shí)現(xiàn)方法很簡(jiǎn)單: 首先,你必須用<s:set >將獲取的字符串存到一變量里面,以str屬性為例 直接獲取<s:set name="str" value="list"></s:set>, 從集合中獲取時(shí): <s:iterator value="集合" > ......................... <s:set name="str" value="str"></s:set> ......................... </s:iterator> 然后就是判斷截取,代碼:
// 當(dāng)長(zhǎng)度超過(guò)6時(shí)截取前6為顯示 <s:if test="%{#str.length()>6}"> <s:property value="str.substring(0,6)+'...'" /> </s:if> //否則全部顯示 <s:else> <s:property value="str" /> </s:else>
另外,還有更簡(jiǎn)單的方法,不用set,直接用變量名稱來(lái)處理:
// 當(dāng)長(zhǎng)度超過(guò)6時(shí)截取前6為顯示 <s:if test="str.length()>6"> <s:property value="str.substring(0,6)+'...'" /> </s:if> //否則全部顯示 <s:else> <s:property value="str" /> </s:else>
說(shuō)到這,基本上你的截取問(wèn)題可以解決,但是,這個(gè)方法對(duì)于含html標(biāo)簽的字符串好像有些問(wèn)題,它會(huì)把html標(biāo)簽也截取過(guò)來(lái),導(dǎo)致頁(yè)面會(huì)因?yàn)闃?biāo)簽的不匹配而變形,甚至給“毀容”。 解決這個(gè)問(wèn)題其實(shí)原理大家都很清楚,就是需要事先將字條串中的html標(biāo)簽過(guò)濾掉,查了查struts2的標(biāo)簽說(shuō)明,好像是沒(méi)有這種方法,哎。于是網(wǎng)上搜羅,發(fā)現(xiàn)了僅僅一段代碼的解決方案: Struts2截取帶html標(biāo)簽字符串的方法
<s:property value="#text.replaceAll('<[^>]+>','').substring(0,77)" escape="false" />
竟然可以運(yùn)行,又學(xué)習(xí)到了一點(diǎn)點(diǎn)東西,text是變量。 這個(gè)標(biāo)簽的作用就是把獲得的值去掉所有的html標(biāo)簽,并截取前面77個(gè)字符,后面的escape='false'表示對(duì)HTML標(biāo)簽不進(jìn)行編碼。 到此為止該問(wèn)題解決,鼓掌! 從這個(gè)用法可知道,struts2標(biāo)簽上都支持java的String類的所有方法,用法起非常方便,本文就起個(gè)拋磚引玉的作用吧。
總結(jié)
以上就是本文關(guān)于Struts2截取字符串代碼介紹的全部?jī)?nèi)容,更多內(nèi)容可以參閱:Struts和servlet不能共存問(wèn)題解決方法 、 Struts2修改上傳文件大小限制方法解析 、 struts2開(kāi)發(fā)流程及詳細(xì)配置等,歡迎大家瀏覽本站其他專題,感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java實(shí)現(xiàn)簡(jiǎn)單碰撞檢測(cè)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單碰撞檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Java靜態(tài)方法和實(shí)例方法區(qū)別詳解
這篇文章主要為大家詳細(xì)介紹了Java靜態(tài)方法和實(shí)例方法的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
java實(shí)現(xiàn)excel導(dǎo)入數(shù)據(jù)的工具類
這篇文章主要介紹了java實(shí)現(xiàn)的excel導(dǎo)入數(shù)據(jù)的工具類,需要的朋友可以參考下2014-03-03
全鏈路監(jiān)控平臺(tái)Pinpoint?SkyWalking?Zipkin選型對(duì)比
這篇文章主要為大家介紹了全鏈路監(jiān)控平臺(tái)Pinpoint?SkyWalking?Zipkin實(shí)現(xiàn)的選型對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
Netty核心功能之?dāng)?shù)據(jù)容器ByteBuf詳解
這篇文章主要為大家介紹了Netty核心功能之?dāng)?shù)據(jù)容器ByteBuf詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
詳解IDEA多module項(xiàng)目maven依賴的一些說(shuō)明
這篇文章主要介紹了詳解IDEA多module項(xiàng)目maven依賴的一些說(shuō)明,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10

