2012-03-26 22 views
9

Estoy usando un h: outputText para mostrar un valor. Me gustaría limitar el valor mostrado de manera que cuando tenga más de 50 caracteres de longitud, se trunque a 50 caracteres y se añada una elipsis al valor truncado. Por ejemplo:JSF 2.0: valor límite de h: texto de salida a un número específico de caracteres

This is some text that has been trun... 

sé que puedo lograr esto en el bean de respaldo, pero me preguntaba si alguien sabía de las etiquetas que pueden lograr esto sin la adición de código para el estado administrado. Parece un caso de uso común.

Gracias.

Respuesta

4

Utilice convertidores JSF personalizados como se explica en "JSF for nonbelievers". Here's un ejemplo de convertidor de truncamiento de texto.

+0

Gracias. También encontré una sección en la tercera edición de Core Java Server Faces, que trata sobre la implementación de conversores personalizados y etiquetas de conversión. –

23

Usted puede utilizar JSF EL .. por ejemplo

<h:outputText value="#{bean.string.length() gt 50 ? bean.string.substring(0,47).concat('...') : bean.string}" /> 
+3

Es tedioso repetir la misma lógica en todos los lugares donde sea necesario. Entonces es más fácil tener un convertidor único y reutilizable o incluso una función EL para eso. La biblioteca de utilidades JSF OmniFaces tiene una función 'of: abreviatura()' para el propósito. – BalusC

+0

Tiene razón ... pero supongamos que el caso es recortar la cadena de un atributo como ... En este caso, usar conversores no es la mejor opción. – YAM

+3

Eso es exactamente cuando una función EL es útil. – BalusC

3

Como se mencionó BalusC, OmniFace de of:abbreviate() podría ser una buena solución para su problema:

<p>Abbreviate a long string: #{of:abbreviate(string1, 20)}</p> 
+2

Solo lo uso, funciona muy bien, como referencia, la importación del espacio de nombres es: xmlns: of = "http://omnifaces.org/functions" –

Cuestiones relacionadas