2011-05-21 15 views
5

我想知道用JSP/Expression Language實現省略號縮寫的最佳方式是什麼。帶JSP/EL的省略號(縮寫文本)

現在,我一直在使用fn:substring,這沒問題,但我希望有三個點「...」,以防文本被截斷。

通過網絡搜索,我發現Java Web Parts有一個AbbreviateTag。不過,我想知道是否有更好的庫,或者如果它更好,我推出自己的自定義標籤。你有什麼建議?

+0

用CSS做這件事不是更好嗎? – McDowell 2011-05-21 13:00:26

+0

似乎文本溢出:省略號在Firefox中不起作用,或者您知道另一種方式? – stivlo 2011-05-21 15:38:52

+0

啊,你看起來是對的 - 看起來似乎是黑客和一個jQuery插件,但這並不理想。 – McDowell 2011-05-21 15:42:39

回答

2

由於我無法理解如何使用mmbase,因此我構建了自己的自定義標記,用於擴展SimpleTagSupport。

它的工作原理是這樣的:

<%@ taglib prefix="sti" uri="/WEB-INF/tlds/stivlo.tld" %> 
<p><sti:ellipsis>What a beautiful day.</sti:ellipsis></p> 
<p><sti:ellipsis maxLength="10">What a beautiful day.</sti:ellipsis></p> 

輸出:

What a beautiful day. 
What a bea… 

我還記錄了custom tag implementation on my blog。這是我的第一個自定義標籤,如果有什麼可以做得更好,我很樂意聽到你的消息。

+0

我接受我自己的答案,因爲我無法讓mmbase工作。 – stivlo 2011-06-25 11:49:47

3

MMBase標記庫有一個支持省略號的tag

但是,實現你自己可能是一個不錯的選擇......取決於你期望的省略號如何工作。

+0

我嘗試使用mmbase,我已經將mmbase-1.9.5.jar(最新版本)放入了我的WEB-INF/lib目錄中,但是出現錯誤:「無法找到標記庫描述符」。我也試着將它添加到eclipse構建路徑中。我嘗試使用uri「http://www.mmbase.org/mmbase-taglib-2.0」和-1.0。我想我現在會盡力實現自己的目標。 – stivlo 2011-05-21 17:21:11

0

舊線程,但我發佈這個任何人尋找答案。以下是我如何處理這個問題。代碼在創建td元素的循環中,因此是對列的引用。如果文本需要截斷,我調整了允許省略號空間的子字符串,然後附加省略號。

<c:if test="${columnMaxLength ge 0}">  
    <c:set value="" var="ellipsis" />   
    <c:if test="${fn:length(colTxt) gt columnMaxLength}">  
    <c:set value="..." var="ellipsis" />  
    </c:if> 
    <c:set value="${fn:substring(colTxt, 0, (columnMaxLength - fn:length(ellipsis)))}${ellipsis}" var="colTxt" /> 
</c:if> 
<c:out value="${colTxt}" />