JavaDabbaDoo.org -Tu comunidad Java parlante Implementar MVC - VW JSF
Inicio | Cursos infosintesis.net liberados | Java EE | Registrar a un usuario en un sitio Web con Visual Web JSF
Registrar a un usuario en un sitio Web con Visual Web JSF
Paso 6: Operativa

Vista - RegistroUsuario.jsp - Crear un validador personalizado

En este paso vamos a comprobar que el correo electrónico introducido en el campo de texto E-Mail es correcto.

Para ello nos vamos a crear nuestro propio validador en el backing bean o page bean RegistroUsuario.java.

Cuando introduzcamos un correo electrónico que no sea correcto aparecerá el siguiente mensaje.

aaaa

Vamos a seguir las siguiente pautas para crear nuestro validador personalizado.

1. Editar el Resource Bundle

En el fichero literales/ErroresBundle.properties añadimos la llave

javax.faces.component.UIInput.REQUIRED=Campo obligatorio

error_email_incorrecto=E-mail incorrecto

2. Declarar el Message Bundle en el fichero de configuración de JSF

Comprobamos que el fichero Message Bundle literales.ErroresBundle está declarado en el fichero de configuración de JSF faces-config.xml

 <application>
  <message-bundle>
literales.ErroresBundle</message-bundle>
 
</application>

3. Escribir un método de validación personalizado

Para crea un método de validación en el backing bean asociado a la página JSP tenemos que hacer clic con el botón derecho del ratón sobre el campo de texto E-Mail y seleccionar Edit Event Handler | validate=>email_validate()

aaaa

Como podemos observar, el asistente de NetBeans ha creado el método email_validate(...).

aaaa

y también ha ampliado la página JSP RegistroUsuario.jsp.

<?xml version="1.0" encoding="UTF-8"?>

<jsp:root version="2.1"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:jsp="http://java.sun.com/JSP/Page"
          xmlns:webuijsf="http://www.sun.com/webui/webuijsf"
>
 <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
 <f:view>
  
<f:loadBundle basename="paqregusuariovwjsf.Bundle" var="mensajes"/>
  <webuijsf:page id="page1">
   <webuijsf:html id="html1">
    <webuijsf:head id="head1" title="Registro Usuaro">
     <webuijsf:link id="link1" url="/resources/stylesheet.css"/>
    </webuijsf:head>
    <webuijsf:body id="body1" style="-rave-layout: grid">
     <webuijsf:form id="form1">
      <webuijsf:staticText id="stxRegistroUsuario"
                           style="font-size: 24px; font-weight: bold;
                                  left: 210px; top: 10px; position: absolute"                            text="#{mensajes.literal_registroUsurario}"
      />
      <webuijsf:staticText id="stxCamposRequeridos"
                           style="font-size: 10px;
                                  left: 280px; top: 40px; position: absolute"                           text="#{mensajes.literal_camposRequeridos}"
      />
      <webuijsf:label for="nombre"
                     id="lb1nombre"
                     style="left: 28px; top: 80px; position: absolute"                      text="#{mensajes.literal_nombre}"
      />
      <webuijsf:textField required="true"
                         id="nombre"
                         style="left: 28px; top: 100px; position: absolute"
      />
      <webuijsf:message for="nombre" id="msgNombre"
                       showDetail="false" showSummary="true"
                       style="left: 28px; top: 123px; position: absolute"
      />
      <webuijsf:image id="imgAsterisco" style="left: 265px; top: 39px; position: absolute"                       url="/imagenes/asterisco.gif"
      />
      <webuijsf:label for="email" id="lblEmail"
                style="left: 28px; top: 140px; position: absolute"                 text="#{mensajes.literal_email}"
      />
      <webuijsf:textField columns="46" id="email" required="true"
                         style="left: 28px; top: 160px; position: absolute"                          
validatorExpression="#{RegistroUsuario.email_validate}"
      />
      <webuijsf:message for="email" id="msgEmail" showDetail="false" showSummary="true"                       style="left: 28px; top: 183px; position: absolute"
      />

      <webuijsf:panelGroup id="pnlgEnviar"
                         style="left: 268px; top: 216px; position: absolute">
       <webuijsf:button id="btnEnviar" text="#{mensajes.literal_enviar}"/>
      </webuijsf:panelGroup>
     </webuijsf:form>
    </webuijsf:body>
   </webuijsf:html>
  </webuijsf:page>
 </f:view>
</jsp:root>

Ahora vamos a implementar el método email_validate(...)

package paqregusuariovwjsf;

import com.sun.rave.web.ui.appbase.AbstractPageBean;
import java.util.ResourceBundle;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

public class RegistroUsuario extends AbstractPageBean {
.
.

 public void email_validate(FacesContext fc, UIComponent uic, Object o) {
  String strValue = String.valueOf(o);
  if (!strValue.matches("
.+@.+\\.[a-z]+")) {
   ResourceBundle resourceBundle = ResourceBundle.getBundle(
                             "literales.ErroresBundle",
                             fc.getViewRoot().getLocale());

   String strTextoError = resourceBundle.getString("error_email_incorrecto");
   
throw new ValidatorException(new FacesMessage(strTextoError));
  }

 }
.
.

}

4. Ejecutar la aplicación Web en inglés

Después de realizar las traducciones pertinenentes este es el mensaje de validación personalizado que recibe el usuario cuando está interacutando con el servidor en lengua inglesa

aaaa
Página anterior
Ignasi Pérez Valls
Infosintesis Solutions Group


Junio 2009
Fundamentos Spring
 
 
 
 
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...