Seleccionar página

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

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies