Pregunta

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, volver a la página de inicio de sesión con los errores en rojo (el inicio de sesión típica o cualquier forma de validación de la página).

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

<html:errors>

etiqueta, que creo que resolvería mi problema.

¿Fue útil?

Solución

He aquí un breve resumen. Tiene una clase ActionForm, dice MyForm:

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

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>

"name" en la acción se refiere a "name" en forma de frijol. Porque has validate="true" su ActionForm clase MyForm debe definir el método validate() la 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 va a llamar a su MyAction.execute (). De lo contrario, Struts muestra /insert.jsp (porque esa es la entrada = Parm diste) y se expande la etiqueta html.errors para mostrar los errores de ActionErrors.

Otros consejos

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

Aquí estoy 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 sólo si el objeto tiene ActionErrors cualquier error en ella.

En la clase de acción, hacer esto:

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 el archivo de mensajes 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>

En la acción puntales:

ActionErrors errors = new ActionErrors();
errors.add("", new ActionMessage("login.msg.err"));
saveErrors(request, errors);

El "hello.msg.err" es definir en MessageBundle.properties

login.msg.err=Wrong user name or password

En JSP que, el error se mostrará por h: errores de la etiqueta:

<h:errors/>

Este video te muestra paso a paso y le explica todas esas cosas: https://youtu.be/YcCsJtqI72A

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top