我想知道用JSP/Expression Language實現省略號縮寫的最佳方式是什麼。帶JSP/EL的省略號(縮寫文本)
現在,我一直在使用fn:substring,這沒問題,但我希望有三個點「...」,以防文本被截斷。
通過網絡搜索,我發現Java Web Parts有一個AbbreviateTag。不過,我想知道是否有更好的庫,或者如果它更好,我推出自己的自定義標籤。你有什麼建議?
我想知道用JSP/Expression Language實現省略號縮寫的最佳方式是什麼。帶JSP/EL的省略號(縮寫文本)
現在,我一直在使用fn:substring,這沒問題,但我希望有三個點「...」,以防文本被截斷。
通過網絡搜索,我發現Java Web Parts有一個AbbreviateTag。不過,我想知道是否有更好的庫,或者如果它更好,我推出自己的自定義標籤。你有什麼建議?
由於我無法理解如何使用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。這是我的第一個自定義標籤,如果有什麼可以做得更好,我很樂意聽到你的消息。
我接受我自己的答案,因爲我無法讓mmbase工作。 – stivlo 2011-06-25 11:49:47
舊線程,但我發佈這個任何人尋找答案。以下是我如何處理這個問題。代碼在創建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}" />
用CSS做這件事不是更好嗎? – McDowell 2011-05-21 13:00:26
似乎文本溢出:省略號在Firefox中不起作用,或者您知道另一種方式? – stivlo 2011-05-21 15:38:52
啊,你看起來是對的 - 看起來似乎是黑客和一個jQuery插件,但這並不理想。 – McDowell 2011-05-21 15:42:39