2011-05-21 10 views
5

Me preguntaba cuál es la mejor manera de implementar una abreviatura de puntos suspensivos con JSP/Expression Language.Elipsis (texto abreviado) con JSP/EL

Por ahora, he estado usando fn: subserie, lo cual está bien, pero me gustaría tener los tres puntos "...", en caso de que el texto se haya truncado.

Con una búsqueda web encontré que Java Web Parts tiene AbbreviateTag. Sin embargo, me preguntaba si hay mejores bibliotecas, o si es mejor, rodar mi propia etiqueta personalizada. ¿Que sugieres?

+0

¿No sería mejor hacerlo con CSS? – McDowell

+0

Parece que el desbordamiento de texto: las elipsis no funcionan en Firefox, ¿o lo sabes de otra manera? – stivlo

+0

ah, parece que tienes razón, parece que hay hacks y un plugin jQuery, pero eso no es ideal. – McDowell

Respuesta

2

Como no podía entender cómo usar mmbase, construí mi propia etiqueta personalizada que extiende SimpleTagSupport.

Funciona de esta manera:

<%@ 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> 

Salida:

What a beautiful day. 
What a bea… 

también he documentado la custom tag implementation on my blog. Esta es mi primera etiqueta personalizada, si algo se puede hacer mejor, me alegraría saber de usted.

+0

Estoy aceptando mi propia respuesta, porque no pude hacer que mmbase funcione. – stivlo

3

La biblioteca de etiquetas MMBase tiene un tag que admite puntos suspensivos.

Sin embargo, implementar la suya podría ser una buena opción ... dependiendo de cómo espere que funcionen las elipsis.

+0

Intenté usar mmbase, puse mmbase-1.9.5.jar (la última versión) dentro de mi directorio WEB-INF/lib, pero aparece el error: "No se puede encontrar el descriptor de la biblioteca de etiquetas". También intenté agregarlo a la ruta de construcción de eclipse. Intenté con uri "http://www.mmbase.org/mmbase-taglib-2.0" y -1.0. Supongo que intentaré implementar el mío por ahora. – stivlo

0

Tema viejo, pero estoy publicando esto para cualquiera que busque una respuesta. A continuación se muestra cómo manejé esto. El código estaba dentro de un bucle creando elementos td, de ahí la referencia a columnas. Si el texto necesita truncamiento, ajusté la subcadena dejando espacio para la elipsis y luego añadí la elipsis.

<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}" /> 
Cuestiones relacionadas