我想知道使用JSP / Expression Language实现省略号缩写的最佳方法是什么。
现在,我一直在使用fn:substring,这没关系,但我希望有三个点“......”,以防文本被截断。
通过网络搜索,我发现Java Web Parts有一个AbbreviateTag。但是我想知道是否有更好的库,或者我是否更好地滚动自己的自定义标签。你有什么建议?
答案 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}" />