Converters en JSF embebidos en un BackingBean

Los Converters customizables o conversores pueden convertir hacia cualquier tipo de objeto->String y viceversa.
Esto es útil en POJOs y controles que requieran colecciones de tipo.
En esta ocasión vamos a escribir un Converter dentro del mismo BackingBean sin la necesidad de hacerlo en una clase nueva, ni anotaciones XML, etc.
Para esta ocasión usaremos el componente AUTOCOMPLETE de PrimeFaces. La idea es ir completando resultados de acuerdo a lo que introduzca el usuario.
1- Devolver una Colección de POJOs (en este caso Cliente)
2- Escribir el JSF xhtml
3- Escribir el Converter

Solamente lo haremos en un BackingBean. En el mismo agregar el Converter como método de retorno y crearemos la clase dentro del objeto:

public Converter getConversorClientes() {
        return new Converter() {
            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }
                int number = Integer.parseInt(value);
                Cliente c = clienteDAO.get(Cliente.class, number);
                return c;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent                component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {
                    return ((Cliente) value).getId() + "";
                }
            }
        };
}

Finalmente debemos hacer el uso en el Front.
El componente JSF


   <p:autoComplete size="55" id="cli" 
              value="#{edicionInmueblesBean.cliente}" 
              forceSelection="true"    
              completeMethod="#{myBean.completeCliente}"  
              var="c" 
              converter="#{edicionInmueblesBean.conversorClientes}"
              itemValue="#{c}" 
              itemLabel="#{c.apellido}">
    </p:autoComplete>
Anuncios