Validando campos para jsf

7

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

Comentarios (7)

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 :D

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


Comentarios cerrados automáticamente al pasar más de un año