Cambios

De ChuWiki
Saltar a: navegación, buscar

Validar campos de formularios con JSF

1957 bytes añadidos, 13:08 5 may 2011
m
sin resumen de edición
 
== Introducción ==
Tenemos varios validators disponibles :
* f:validateBean
* f:validateDoubleRange
* f:validateLength
* f:validateLongRange
* f:validateRegex
* f:validateRequired
 
== Validator a medida ==
 
Podemos hacernos fácilmente nuestra propia validación. En uno de los ManagedBean de JSF podemos poner un método de validación, de la siguiente forma
 
<pre>
@ManagedBean
public class HolaMundo {
....
 
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
if (((String)arg2).length()<5) {
throw new ValidatorException(new FacesMessage("Al menos 5 caracteres "));
}
}
}
</pre>
 
Un método (de nombre el que queramos) que admita los parámetros que se ponen ahí. En arg2 recibiremos el contenido del campo de texto, que en principio será un String con el contenido del campo de texto. Si el String recibido nos parece válido, no hay que hacer nada especial. Si el String no nos gusta, debemos lanzar una ValidatorExcepcion con el texto de error que queremos que se muestre en el navegador.
 
En el código html, pondremos algo así
 
<pre>
<h:form>
<h:inputText id="idNumero" validator="#{holaMundo.validate}">
</h:inputText>
<h:commandButton action="bien.xhtml" value="Enviar">
</h:commandButton>
<h:message for="idNumero"></h:message>
</h:form>
</pre>
 
En el inputText hemos puesto un atributo validator en el que se hace la llamada al método del ManagedBean que acabamos de hacer.
 
Hemos comentado que en ese método el tipo recibido es "en principio un String". Esto es cierto si no asociamos el campo de texto a ningún atributo de ningún ManagedBean. Si hacemos por ejemplo algo como esto
 
<pre>
<h:inputText id="idNumero" value="#{holaMundo.valor}" validator="#{holaMundo.validate}">
</pre>
 
siendo #{holaMundo.valor} un atributo, por ejemplo, de tipo entero, en nuestro método de validación recibiremos un Integer, siempre que lo escrito pueda convertirse a Integer, o String en caso contrario.
[[Categoría:JSF]][[Categoría:J2EE]]
928
ediciones

Menú de navegación