Seleccionar página

Cómo limitar el numero de caracteres que muestra un h:outputText

por | Feb 1, 2008 | General

En alguna ocasión, trabajando con JSF, he necesitado limitar el número de caracteres que se muestran en un elemento de salida de texto, como un outuputText.Una forma fácil de hacerlo es implementar un Converter personalizado.

En primer lugar necesitas declarar una clase que implemente la interfaz javax.faces.convert.Converter e implementar los métodos getAsObject y getAsString.
Aquí tienes la implementación del Converter: StringLimiterConverter

package es.neodoo.control.jsf;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

public class StringLimiterConverter implements Converter {
private static final String LIMIT_PARAMETER_NAME = «limit»;
private static final int DEFAULT_LIMIT = 5;

public Object getAsObject(FacesContext context, UIComponent component, String value) {
return limit(value, getLimitAttribute(component));
}

public String getAsString(FacesContext context, UIComponent component, Object value) {
if (! (value instanceof String))
return null;
else {
return limit(value.toString(), getLimitAttribute(component));
}
}

private int getLimitAttribute(UIComponent component) {
Object att = component.getAttributes().get(LIMIT_PARAMETER_NAME);
if (att == null)
return DEFAULT_LIMIT;
else
return Integer.parseInt((String)component.getAttributes().get(LIMIT_PARAMETER_NAME));
}

private String limit(String s, int limit) {
String limited = s;
if (! (s.length() <= limit))
limited = s.substring(0, limit);
return limited;
}
}

Después registra el converter en el archivo faces-config.xml

stringLimiterConverter
tes.jsf.converter.StringLimiterConverter

Y ya puedes usarlo a través de la etiqueta de JSF

Con el atributo <f:attribute name=»limit» value=»6″ /> podemos indicarle el número de caracteres que queremos que nos muestre

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *