2009-06-02 11 views
6

Estoy tratando de hacer una página de inicio de sesión en Struts. La idea es validar si el usuario existe, etc., y luego, si hay un error, regresar a la página de inicio de sesión con los errores en rojo (el inicio de sesión típico o cualquier validación de página de formulario).<html:errors> struts tutorial o ejemplo

Me gustaría saber si alguien conoce un tutorial de gestión de errores en Struts. Busco especialmente para un tutorial (o ejemplo) de la etiqueta

<html:errors> 

, que creo que resolvería mi problema.

Respuesta

10

Aquí hay un resumen rápido. Tiene una clase ActionForm, MyForm decir:

<form-bean name="myForm" type="myapp.forms.MyForm"/> 

usted tiene una clase Action, MyAction decir:

<action path="/insert" type="myapp.actions.MyAction" name="myForm" 
    input="/insert.jsp" validate="true" /> 
    <forward name="success" path="/insertDone.jsp"/> 
</action> 

"nombre" en la acción se refiere a "nombre" en forma de frijol. Debido a que tiene validate="true" su clase MyFormActionForm debe definir validate() método que se llamará automáticamente:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 
    ActionErrors errors = new ActionErrors(); 
    if ((username==null) || (username.length() < 1)) 
     errors.add("username", new ActionError("error.username.required")); 
    return errors; 
} 

Si devuelve un objeto ActionErrors vacías, Struts pasa a llamar a su MyAction.execute(). De lo contrario, Struts muestra /insert.jsp (porque esa es la entrada = parm que le diste) y expande la etiqueta html.errors para mostrar los errores de ActionErrors.

+0

¡Gracias! Después de horas de trabajo, finalmente pude validar mi formulario. Al final, prefiero validar en el bean en lugar de la acción y utilicé el archivo validation.xml (para el minlenght, requerido, etc.) y la validación de la base de datos (el usuario existe, la contraseña es correcta ...). Lo único que tuve que cambiar fue el uso de ".add (String, ActionError)" de ActionErrors porque está en desuso (Struts 1.2.x) y usé ".add (String, ActionMessage)" que es esencialmente el mismo. ¡De nuevo, muchas gracias por sus respuestas! – Tere

+0

@Mark Lutton: si el formulario se creó a partir de otra Acción (por ejemplo, las etiquetas/valores de algunos botones de radio se recuperaron de un DB y se colocaron en la solicitud), ¿cómo se pueden mostrar nuevamente junto con el error? en el caso de que se requiera seleccionar un botón de opción)? No puedo mostrarlos cuando envío el formulario (solo se imprime el error). – Sefran2

14

Aquí hay uno: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

Aquí' m asumiendo puntales 1. no sé si ha cambiado de Struts 2.

puede poner errors.header y errors.footer en el archivo de recursos de mensajes:

errors.header=<h3><font color="red">Errors:</font></h3><ul> 
errors.footer=</ul> 

El encabezado y el pie se muestran solo si el objeto ActionErrors tiene algún error en él.

En nuestra clase Action, haga lo siguiente:

ActionErrors errors = new ActionErrors(); 
if (badInput) { 
    errors.add(ActionErrors.GLOBAL_ERROR, 
    new ActionError("error.bad.input", badString); // key in messages resource file 
            // badString will replace {0} in message 
} 

A continuación, antes de regresar:

saveErrors(request, errors); 

en tus mensajes archivo de recursos:

error.bad.input=<li>Bad input: '{0}' is invalid.</li> 

Ahora, cuando se procesa la etiqueta <html:errors/> , se convertirá en:

<h3><font color="red">Errors:</font></h3><ul> 
<li>Bad input: 'xxyyzzz' is invalid.<li> 
</ul> 
+0

Esta es sin duda una respuesta colorida, ¿no? No domino cómo funciona el formateo aquí. –

+0

¡Muchas gracias por su respuesta! Todavía estoy tratando de validar (siguiendo tus sugerencias, ¡son realmente buenas! Necesitaba algo así, todo explicado en el mismo lugar) ¡Te avisaré cuando funcione! ;) – Tere

+0

La mejor explicación de esto está en el libro "The Struts Framework: Practical Guide for Java Programmers" de Sue Spielman, ISBN 1-55860-862-1. Capítulo 5. Va paso a paso. –