使用JSP / EL的省略号(缩写文本)

时间:2011-05-21 05:43:55

标签: java jsp el taglib

我想知道使用JSP / Expression Language实现省略号缩写的最佳方法是什么。

现在,我一直在使用fn:substring,这没关系,但我希望有三个点“......”,以防文本被截断。

通过网络搜索,我发现Java Web Parts有一个AbbreviateTag。但是我想知道是否有更好的库,或者我是否更好地滚动自己的自定义标签。你有什么建议?

3 个答案:

答案 0 :(得分:3)

MMBase标记库有一个支持省略号的tag

但是,实现自己的选择可能是一个不错的选择......具体取决于您对省略号的预期效果。

答案 1 :(得分: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。这是我的第一个自定义标签,如果可以做得更好,我很乐意收到你的来信。

答案 2 :(得分:1)

旧帖子,但是我发帖给任何寻找答案的人。以下是我处理这个问题的方法。代码位于创建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}" />