13Copyright © 2004, Oracle. Todos los derechos reservados.
Adición de Manejo de Errores y Validación
Copyright © 2004, Oracle. Todos los derechos reservados.
Objetivos
Al finalizar esta lección, debería estar capacitado para:
• Validar la entrada de pantalla
• Utilizar la validación declarativa
• Utilizar la validación en el cliente
• Utilizar las indicaciones de control para modificar la vista
Copyright © 2004, Oracle. Todos los derechos reservados.
Visión General de Validación
Validadores de método,indicaciones de control
ADFBusiness
ComponentsBean de pantalla
de StrutsAcción
de Struts
Método validate()de bean de pantalla, validador de Struts
JSP
JavaScript Nuevos métodos de validación
Copyright © 2004, Oracle. Todos los derechos reservados.
Necesidad de Validación
Por lo general, en las aplicaciones Web, el usuario no recibe formación sobre cómo completar los campos correctamente. Así, una aplicación debe proporcionar feedback al usuario para estos tipos de acciones:
• Introducción de valores necesarios
• Especificación de valores dentro de un rango especificado
• Comparación de valores – Por ejemplo, Password1 se debe corresponder con
Password2.
Copyright © 2004, Oracle. Todos los derechos reservados.
Validación del Cliente
Para realizar la validación mediante Struts debe:
1. Crear una clase de bean de pantalla
2. sobrescribir el método validate() de bean de pantalla, transfiriendo un error a la acción
3. Crear el mensaje de error en ApplicationResources.properties
4. Agregar el atributo de entrada para la pantalla a la acción para indicar dónde debe aparecer el mensaje de error
Copyright © 2004, Oracle. Todos los derechos reservados.
Método de Validación de Bean de Pantalla
El bean de pantalla contiene un método validate() para validar campos de pantalla. sobrescriba este método para realizar la validación personalizada:
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ((username == null) || (username.trim().equals(""))) {
errors.add("username", new ActionError("error.username.required"));
} return errors; }
Copyright © 2004, Oracle. Todos los derechos reservados.
Creación del Mensaje de Error
• Para mostrar el mensaje de error, especifique el mensaje en ApplicationResources.properties:
• Defina dónde se va a mostrar el mensaje de error mediante el atributo input:
error.username.required=The Username Value must be Supplied
<action name="logonbean" path="/logon" input="showLogon.jsp" type="view.LogonAction">
Copyright © 2004, Oracle. Todos los derechos reservados.
Impresión de Errores en JSP
Asegúrese de que la JSP contiene una etiqueta <html:errors>:
Observe que puede especificar el atributo de propiedad de la etiqueta <html:errors> para imprimir sólo el error correspondiente:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ page contentType="text/html;charset=windows-1252"%> <html> … <body> <html:errors /> …
<html:text property="username"></html:text>
<html:errors property="username" />
Copyright © 2004, Oracle. Todos los derechos reservados.
Validación de Acciones
Un segundo tipo de validación consiste en sobrescribir el método de ejecución en la clase de acción. Este tipo de validación es útil cuando:
• Se han creado previamente clases que comprueben la validez de un valor determinado
• El usuario no desea que los valores de pantalla se reestablezcan tras la validación
• La lógica de validación es compleja
Copyright © 2004, Oracle. Todos los derechos reservados.
Creación de una Clase de Validación
El primer paso para validar la entrada de usuario es crear un método para la validación. Esto se puede hacer en un archivo de clase sencillo, como se muestra:
package view; public class LoginValidation { boolean checkUsernamePassword(String un, String pw) { if ( un.equals("scott") && pw.equals("tiger") ) return true;
else return false; } }
Copyright © 2004, Oracle. Todos los derechos reservados.
El Método execute()
Para validar la entrada de usuario en la clase de acción, sobrescriba el método execute(), llamando al método de validación:
public ActionForward execute… { LogonActionForm logonForm = (LogonActionForm) form; String un = logonForm.getUsername(); String pw = logonForm.getPassword(); LoginValidation loginvalidation = new LoginValidation();
if ( loginvalidation.checkUsernamePassword(un,pw)) { return mapping.findForward("success"); } else return mapping.findForward("failure"); }
Copyright © 2004, Oracle. Todos los derechos reservados.
Resultados de Validación
2. El usuario no introducedatos (validación de bean
de pantalla).
1. El usuario introduce una conexión incorrecta (validación de acción).
3. El usuario introduce unaconexión correcta.
Copyright © 2004, Oracle. Todos los derechos reservados.
Validador de Struts
Valide de forma declarativa campos de pantalla mediante el validador de Struts. El plugin del validador:
• Está basado en XML – validator-rules.xml (reglas de validación) – validations.xml (usos)
• Define las reglas de cada campo en un bean de pantalla
• Puede proporcionar la validación de cliente mediante JavaScript
• Es ampliable
Copyright © 2004, Oracle. Todos los derechos reservados.
Configuración del Validador de Struts
1. Especifique la clase de validador en la etiqueta <plug-in> de struts-config.xml.
2. Agregue validation-rules.xml al proyecto.
3. Modifique la clase de bean de pantalla a la subclase ValidatorForm o DynaValidatorForm.
4. Cree un archivo de uso para especificar las reglas de campo de pantalla.
5. Agregue mensajes de error a ApplicationResources.properties.
Copyright © 2004, Oracle. Todos los derechos reservados.
Uso del Validador de Struts
Agregue ValidatorPlugIn a la etiqueta <plug-in> y especifique la ruta para validator-rules.xml y validation.xml:
Copyright © 2004, Oracle. Todos los derechos reservados.
Uso del Validador de Struts
• Especifique el bean de pantalla para utilizar el validador de Struts mediante la subclasificación de ValidatorForm o DynaValidatorForm:
• Cree validation.xml para validar campos de pantalla y asegúrese de que todos los campos de pantalla que se van a validar contienen una entrada en ApplicationResources.properties:
import org.apache.struts.validator.ValidatorForm; public class LogonActionForm extends ValidatorForm {…
Logon.username=username Logon.password=password
Copyright © 2004, Oracle. Todos los derechos reservados.
validation.xml: Ejemplo
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <form-validation> <formset>
<form name="logonbean"> <field property="password" depends="required" > <arg0 key="logon.password" /> </field>
</form> </formset> </form-valiidation>
Copyright © 2004, Oracle. Todos los derechos reservados.
Salida del Validador de Struts
Los mensajes del validador se pueden mostrar en la página o en una ventana de JavaScript:
Copyright © 2004, Oracle. Todos los derechos reservados.
Manejo de Excepciones
Para implementar el manejo de excepciones:
1. Cree una clase para el manejo de excepciones, que subclasifique
org.apache.struts.action.ExceptionHandler
2. Sustituya el método execute()para procesar la excepción
3. Devuelva un objeto ActionForward
4. Configure el manejador de excepciones en el archivo struts-config.xml
5. Cree un mensaje de excepción en ApplicationResources.properties
Copyright © 2004, Oracle. Todos los derechos reservados.
JavaScript
JavaScript se soporta en JDeveloper como una manera sencilla de incorporar la validación.
Copyright © 2004, Oracle. Todos los derechos reservados.
Mejora de la Vista
Utilice las indicaciones de control para modificar el modo en que un atributo se muestra en un cliente.
Copyright © 2004, Oracle. Todos los derechos reservados.
Resumen
En esta lección ha aprendido a:
• Validar la entrada de pantalla mediante: – El método validate() – La clase de acción – El validador de Struts
• Desarrollar la validación de JavaScript
• Personalizar la vista mediante indicaciones de control
Copyright © 2004, Oracle. Todos los derechos reservados.
Práctica 13-1: Visión General
Esta práctica cubre los siguientes temas:
• Validación de campos de pantalla mediante el método validate()
• Creación de métodos de validación
• Llamada a métodos de validación desde acciones
• Uso del Validador de Struts
• Manejo de excepciones