【问题标题】:Ellipsis (abbreviate text) with JSP / EL带有 JSP/EL 的省略号(缩写文本)
【发布时间】:2011-08-30 02:37:01
【问题描述】:

我想知道用 JSP/表达式语言实现省略号缩写的最佳方法是什么。

目前,我一直在使用 fn:substring,这没问题,但我想要三个点“...”,以防文本被截断。

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

【问题讨论】:

  • 用 CSS 做这个不是更好吗?
  • 似乎 text-overflow:ellipsis 在 Firefox 中不起作用,或者你知道另一种方式吗?
  • 啊,你似乎是对的 - 似乎确实存在 hacks 和 jQuery 插件,但这并不理想。

标签: java jsp el taglib


【解决方案1】:

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

但是,实现您自己的可能是一个不错的选择...这取决于您期望省略号的确切工作方式。

【讨论】:

  • 我尝试使用 mmbase,我已将 mmbase-1.9.5.jar(最新版本)放在我的 WEB-INF/lib 目录中,但出现错误:“找不到标记库描述符”。我也尝试将它添加到 Eclipse 构建路径。我尝试使用 uri“mmbase.org/mmbase-taglib-2.0”和-1.0。我想我现在会尝试实现自己的。
【解决方案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。这是我的第一个自定义标签,如果有什么可以做得更好,我很高兴收到您的来信。

【讨论】:

  • 我接受我自己的答案,因为我无法让 mmbase 工作。
【解决方案3】:

旧线程,但我将其发布给任何寻找答案的人。以下是我的处理方式。该代码位于创建 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}" />

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 2020-09-15
    • 1970-01-01
    • 2019-11-25
    • 2019-04-08
    • 2013-08-10
    • 2012-12-13
    • 2013-12-31
    • 2017-04-07
    相关资源
    最近更新 更多