2010-08-11 6 views
3

Je travaille sur une ancienne application Web qui utilise Struts 1.1. Pour effectuer des validations métier (validations complexes impliquant plusieurs propriétés de formulaire et appel de services backend), j'ai écrit une implémentation ActionForm qui appelle une chaîne de validateurs sur la méthode ActionForm.validate.Gestion des exceptions dans Struts 1 ActionForm

La chaîne de validateurs est implémentée en utilisant la chaîne de communes. Tout est bon, sauf que lorsqu'une exception se produit dans ActionForm.validate, elle n'est pas interceptée par le gestionnaire d'exceptions struts, mais la piletrace est affichée à l'écran. Le gestionnaire d'exception struts n'attrape pas cela

Est-il possible d'éviter la pile sur la page et de propager l'exception au gestionnaire d'exception struts?

Merci

Répondre

1

Peut-être qu'il est préférable que les validateurs ne jettent pas d'exceptions du tout. Les validations sont destinées à vérifier les entrées de l'utilisateur par rapport à des contraintes telles que minChars, maxChars, la force/vérification du mot de passe, la correction syntaxique de l'e-mail, isNumber, etc. Si un validateur échoue, il ne devrait retourner que false - ne jamais lancer une exception. Voir les exemples à http://struts.apache.org/1.2.4/userGuide/dev_validator.html

Si votre validateur invoque des fonctions de backend ... il y a quelque chose de mal - je pense. Le validateur doit uniquement ajouter des erreurs de champ.

S'il y a des erreurs comme conséquence d'entrées correctes syntaxiques (par exemple mauvais utilisateur/mot de passe pour une connexion) alors votre application Struts (vos actions) devrait gérer ceci et renvoyer des erreurs d'action à l'utilisateur. Cela peut être fait en redirigeant vers des pages d'erreur sur les exceptions levées (UserNotLoggedInException).

+0

Je ne voulais pas polluer les méthodes d'action avec des validations métier. C'est la raison pour laquelle ils ont été invoqués à partir de la chaîne de validation. Les exceptions ne sont pas interceptées par le gestionnaire d'exceptions Struts, mais elles sont interceptées par les pages d'erreur définies dans le fichier web.xml. Merci d'avoir répondu. –