Por admin | Para la categoría de jsf (java server faces) | noticia del 16-07-2010
Ejemplo de validación de algunos tipos de campos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <f:view> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="../css/estilo.css"/> <title>Formulario mensaje</title> </head> <body> <div id="contenedor"> <div id="contenido"> <h2> Formulario Mensajes</h2> <h:form> <div class="campo"> <h:outputText value="#{mensaje.nombre}"/> <br/> <h:inputText id="nombre" value="#{mensajesBean.nombre}" required="true" /> <h:message for="nombre" errorClass="errores" /> </div> <div class="campo"> <h:outputText value="#{mensaje.apellidos}"/> <br/> <h:inputText value="#{mensajesBean.apellidos}" required="true" id="apellidos"/> <h:message for="apellidos" errorClass="errores"/> </div> <div class="campo"> <h:outputText value="#{mensaje.edad}"/> <br/> <h:inputText converter="#{BigInteger}" id="edad" value="#{mensajesBean.edad}" required="true" > <f:validateDoubleRange minimum="1" maximum="120" /> </h:inputText> <h:message for="edad" errorClass="errores"/> </div> <div class="campo"> <h:outputText value="introduce un número de teléfono"/> <br/> <h:inputText value="#{mensajesBean.telefono}" required="true" id="telefono"> <f:validateLength minimum="9"/> </h:inputText> <h:message for="telefono" errorClass="errores"/> </div> <div class="campo"> <h:outputText value="Introduce tu fecha de nacimiento"/> <h:inputText value="#{mensajesBean.fecha}" required="true" id="fecha"> <f:convertDateTime pattern="M/d/yy hh:mm" /> </h:inputText> <h:message for="fecha" errorClass="errores"/> </div> <h:commandButton value="enviar" styleClass="boton" action="mensajeaction"/> <h:commandButton action="cancelaraction" value="cancelar" styleClass="boton" immediate="true"/> </h:form> </div> <div id="pie"> <p>www.railsymas.com</p> </div> </div> </body> </f:view> </html> |
configuración faces-confing.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <navigation-rule> <from-view-id>/pages/formulariomensajes.jsp</from-view-id> <navigation-case> <from-outcome>mensajeaction</from-outcome> <to-view-id>/pages/resultadomensaje.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/pages/formulariomensajes.jsp</from-view-id> <navigation-case> <from-outcome>cancelaraction</from-outcome> <to-view-id>/pages/cancelada.jsp</to-view-id> </navigation-case> </navigation-rule> |
Código de la página resulta
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <f:view> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><h:outputText value="#{mensaje.titulo}"/></title> <link rel="stylesheet" href="../css/estilo.css" type="text/css" /> </head> <body> <div id="contenedor"> <div id="contenido"> <div class="campo"> <h:outputText value="Tu nombre:"/> <h:outputText value="#{mensajesBean.nombre}"/> </div> <div class="campo"> <h:outputText value="Tus apellidos:"/> <h:outputText value="#{mensajesBean.apellidos}"/> </div> <div class="campo"> <h:outputText value="Tu edad:"/> <h:outputText value="#{mensajesBean.edad}"/> </div> <div class="campo"> <h:outputText value="Tu teléfono:"/> <h:outputText value="#{mensajesBean.telefono}"/> </div> </div> <div id="pie"> <p> www.railsymas.com </p> </div> </div> </body> </f:view> </html> |
Los mensajes de errores correspondientes
Configuración del archivo face-config.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <application> <resource-bundle> <base-name>propiedades.message</base-name> <var>mensaje</var> </resource-bundle> <locale-config> <default-locale>es_ES</default-locale> <supported-locale>en</supported-locale> </locale-config> <message-bundle>propiedades.erroresBundle</message-bundle> </application> |
jsf a diferencia de struts o springframework donde los errores los validamos bien mediante clases específicas o mediante el framework struts-validator.xml en jsf existen una serie de mensajes estandar con los cuales jugar para obtener el resultado esperado
Código de erroresBundle.properties
1 2 3 4 5 6 |
javax.faces.component.UIInput.REQUIRED = Campo Requerido
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = No esta en el rango entre 1 y 120
javax.faces.converter.BigIntegerConverter.BIGINTEGER= {0} Tiene que ser un número
javax.faces.validator.LengthValidator.MINIMUM = El número de teléfono debe ser de nueve mínimo
javax.faces.converter.DateTimeConverter.DATE = {0} no es una fecha correcta |
Dirección con gran cantidad de mensajes javadabbadoo.org





Como cambia los mensajes especificos
gracias
Se crea un archivo de propiedades específico para los mensajes de errores, pongo una apliación para que se vea mejor
Como se puede validar que en un formulario alguno de los campos se ha relenado??
Un saludo y gracias de antemano
En el ejemplo viene puesto, en el archivo de propiedades para errores
erroresBudle.properties tenemos
Para declarar el fichero de errores dentro del fichero de configuración de jsf faces-confing.xml
propiedades.erroresBundle
y dentro del fichero de erroes ponemos la siguente línea
javax.faces.component.UIInput.REQUIRED = Campo Requerido estamos pidiendo una entrada como requerida
Muchas gracias ;-D
Muy buen artículo gracias por compartir tus conocimientos
Estan fantásticos estos tutoriales, me sirvió de mucho