Los
convertidores cubren la necesidad de asignar valores entre la vista y el modelo
de manera automática, manejando tipos diferentes al default (String). Por
ejemplo, convirtiendo una cadena a fecha y asignándola directamente a la
propiedad de nuestro modelo manejando el mismo tipo.
De
igual manera, cubre la necesidad de desplegar la información del modelo con un
formato específico, por ejemplo un formato de una fecha, un valor decimal con
ciertas posiciones, etc.
Tipos de convertidores en JSF 2.0
- Conversiones implícitas
- Conversiones explicitas
Conversiones
implícitas:
Son todas aquellas conversiones que JSF realiza de manera
automática, por ejemplo al usar los tipos primitivos (boolean, short, int,
char, byte, float, double y long), BigInteger o String.
Como se puede apreciar en la figura anterior, en la pagina
tenemos el campo txtClave en el cual el usuario introduce una cadena de texto,
JSF realiza la conversión de forma implícita al tipo de dato primitivo
correspondiente del atributo clave dentro del ManagedBean de modelo.
Conversiones
explicitas:
Son aquellas conversiones donde nosotros tenemos que especificar
la clase que convertirá el dato dentro del componente de texto.
Hay dos formas de implementar la conversión explicita:
- Usando el atributo converter del componente de texto
- Usando un componente de tipo converter
Usando
el atributo converter:
Usando un componente de tipo converter:
Convertidores estándar:
Estos convertidores están listos para usarse dentro de nuestras
paginas JSF.
Convertidores
personalizados:
- Crear una clase que implemente la interfaz javax.faces.convert.Converter
- Sobrescribir los métodos getAsObject() y getAsString() de la interfaz converter
- Asignarle a la clase un converter Id con la anotación @FacesConverter o registrándola en el archivo faces-config.xml
- Ligar nuestra clase “convertidor personalizado” al componente JSF con ela tributo converter o con el tag f:converter
Implementar nuestro convertidor en la página JSF:
Ejemplo convirtiendo la clave de String a numero:
No hay comentarios.:
Publicar un comentario