Многоточие (сокращенный текст) с JSP / EL - PullRequest
6 голосов
/ 21 мая 2011

Мне было интересно, как лучше всего реализовать аббревиатуру с многоточием с помощью JSP / Expression Language.

На данный момент я использую fn: substring, что нормально, но я хотел бы иметь три точки "...", на случай, если текст был усечен.

С помощью веб-поиска я обнаружил, что Веб-части Java имеют AbbreviateTag . Тем не менее, мне было интересно, есть ли лучшие библиотеки, или я лучше добавлю свой собственный тег. Что вы предлагаете?

Ответы [ 3 ]

3 голосов
/ 21 мая 2011

В библиотеке тегов MMBase есть тег , который поддерживает многоточие.

Однако реализация собственного может быть хорошим вариантом ... в зависимости от того, как именно вы ожидаете, что многоточие будет работать.

2 голосов
/ 22 мая 2011

Поскольку я не мог понять, как использовать 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…

Я также задокументировал реализацию пользовательского тега в своем блоге ,Это мой первый пользовательский тег, если что-нибудь можно сделать лучше, я буду рад услышать от вас.

1 голос
/ 31 июля 2015

Старая тема, но я публикую это для всех, кто ищет ответ.Ниже, как я справился с этим.Код был внутри цикла, создающего элементы 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}" />
...