Question

Je suis en train de faire une page de connexion à Struts. L'idée est de valider si l'utilisateur existe, etc, et s'il y a une erreur, revenir à la page de connexion avec les erreurs en rouge (la connexion typique ou une validation de page de formulaire).

Je voudrais savoir si quelqu'un connaît un tutoriel de gestion des erreurs dans Struts. Je cherche spécialement pour un tutoriel (ou par exemple) du

<html:errors>
balise

, que je pense résoudrait mon problème.

Était-ce utile?

La solution

Voici un résumé rapide. Vous avez une classe ActionForm, dites MyForm:

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

Vous avez une classe Action, dit MyAction:

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

« nom » dans l'action se réfère au « nom » sous la forme de haricots. Parce que vous avez validate="true" votre classe ActionForm MyForm doit définir la méthode validate() qui sera automatiquement appelé:

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 elle retourne un objet vide ActionErrors, Struts continue d'appeler votre MyAction.execute (). Dans le cas contraire, Struts affiche /insert.jsp (parce que l'entrée est = parm que vous avez donné) et élargit la balise html.errors pour afficher vos erreurs de ActionErrors.

Autres conseils

Voici un: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

Ici, je pars du principe que Struts 1. Je ne sais pas si elle a changé pour Struts 2.

Vous pouvez mettre errors.header et errors.footer dans votre fichier de ressources de message:

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

L'en-tête et pied de page ne sont affichés que si l'objet ActionErrors a des erreurs en elle.

Dans votre classe d'action, faites ceci:

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
}

Alors avant de revenir:

saveErrors(request, errors);

Dans votre message fichier de ressources:

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

Maintenant, quand la balise <html:errors/> est traitée, elle se transforme en:

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

En action struts:

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

Le "hello.msg.err" est définir MessageBundle.properties

login.msg.err=Wrong user name or password

En vous JSP, l'erreur sera affiché par h: tag erreurs:

<h:errors/>

Cette vidéo vous et expliquez-vous montre étape par étape toutes ces choses: https://youtu.be/YcCsJtqI72A

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top