2009-06-02 4 views
6

J'essaie de créer une page de connexion dans Struts. L'idée est de valider si l'utilisateur existe, etc, puis s'il y a une erreur, retournez sur la page de connexion avec les erreurs en rouge (le login typique ou toute validation de page de formulaire).<html:errors> Tutoriel struts ou exemple

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) de la

<html:errors> 
tag

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

Répondre

10

Voici un bref résumé. Vous avez une classe ActionForm, dire MyForm:

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

Vous avez une classe Action, dire 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 ActionForm classe 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 ActionErrors vide, Struts va à appeler votre MyAction.execute(). Sinon, Struts affiche /insert.jsp (parce que c'est l'entrée = parm que vous avez donné) et développe la balise html.errors pour afficher vos erreurs d'ActionErrors.

+0

Merci! Après des heures de travail, j'ai enfin pu valider ma forme. Au final, je préfère valider dans le bean au lieu de l'action et utiliser le validation.xml (pour la minlenght, required, etc.) et la validation de la base de données (l'utilisateur existe, le mot de passe est correct ...). La seule chose que je devais changer était l'utilisation de « .add (String, ActionError) » de ActionErrors parce est dépréciée (Struts 1.2.x) et utilisé « .add (String, ActionMessage) » qui est essencially même. Encore une fois, merci beaucoup pour vos réponses! – Tere

+0

@Mark Lutton: si le formulaire a été créé à partir d'une autre action (par exemple, les étiquettes/valeurs de certains boutons radio ont été récupérées d'un DB et mises dans la requête), comment les boutons radio peuvent-ils être affichés avec l'erreur dans le cas où un bouton radio doit être sélectionné)? Je n'arrive pas à les afficher, quand je soumets le formulaire (seule l'erreur est imprimée). – Sefran2

14

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

Ici je m en supposant Struts 1. Je ne sais pas si elle a changé pour Struts 2.

Vous pouvez mettre un 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 sont affichés uniquement si l'objet ActionErrors contient des erreurs.

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 
} 

Puis avant de retourner:

saveErrors(request, errors); 

dans vos messages fichier de ressources:

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

Maintenant, lorsque l'étiquette <html:errors/> est traitée , il deviendra:

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

Ceci est certainement une réponse colorée, n'est ce pas? Je n'ai pas maîtrisé comment le formatage fonctionne ici. –

+0

Merci beaucoup pour votre réponse! J'essaie toujours de valider (en suivant vos sugestiongs, ils sont vraiment bons! J'avais besoin de quelque chose comme ça, tout est expliqué au même endroit) Je vous tiendrai au courant quand ça marchera! ;) – Tere

+0

La meilleure explication de cela est dans le livre "The Struts Framework: Guide pratique pour les programmeurs Java" par Sue Spielman, ISBN 1-55860-862-1. Chapitre 5. Il va étape par étape. –