您好,登錄后才能下訂單哦!
這篇文章給大家介紹利用Struts2怎么對(duì)字符串進(jìn)行截取,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
在開發(fā)中,經(jīng)常會(huì)遇到字符串太長(zhǎng),需要適當(dāng)截取后再顯示的問題,其實(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ì)這一問題眾說(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ō)到這,基本上你的截取問題可以解決,但是,這個(gè)方法對(duì)于含html標(biāo)簽的字符串好像有些問題,它會(huì)把html標(biāo)簽也截取過(guò)來(lái),導(dǎo)致頁(yè)面會(huì)因?yàn)闃?biāo)簽的不匹配而變形,甚至給“毀容”。 解決這個(gè)問題其實(shí)原理大家都很清楚,就是需要事先將字條串中的html標(biāo)簽過(guò)濾掉,查了查struts2的標(biāo)簽說(shuō)明,好像是沒有這種方法,哎。于是網(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)行編碼。 到此為止該問題解決,鼓掌! 從這個(gè)用法可知道,struts2標(biāo)簽上都支持java的String類的所有方法,用法起非常方便,本文就起個(gè)拋磚引玉的作用吧。
關(guān)于利用Struts2怎么對(duì)字符串進(jìn)行截取就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。