Bonjour tout le monde, voici mon premier post dans ce forum et j'espere ne pas poser une question idiote....
Alors voici mon probleme, bien que la gestion des messages d'erreurs n'a rien de sorcier dans Struts, je le trouve un peu limité. Pour etre plus précis je trouve qu il ne permet pas d'"industrialiser les messages d'erreurs", ce qui veut dire que l'on ne peut pas aisement définir un message d'erreur par défaut, qui donne le nom du champ ou apparait l erreur, et ce qui faut mettre dans le champ.
En clair (enfin, j espere etre assez clair) dans le cas basique des erreurs de conversion (un champ dans le formulaire associé a un attribut d'une classe action), je voudrais surcharger le message par defaut
"xwork.default.invalid.fieldvalue=Invalid field value for field "{0}"."
et mettre a la place quelque chose du genre
"xwork.default.invalid.fieldvalue=erreur de conversion pour le champs "{0}", il faut un {1}." ou 1 serait un String, un int, un long etc.....
Pour faire cela, j ai essayé de remplacer l'intercepteur "ConversionErrorInterceptor" par un intercepteur personnalisé mais je n'arrive malheureusement pas à récupérer la classe du champ sur lequel il y a une erreur......
Je peux ajouter un nouveau format pour le message par defaut mais je ne sais pas comment recuperer la classe attendu du champ ou a eu lieu l erreur.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //debut de la boucle qui permet de recuperer les messages d erreurs for (Iterator iterator = conversionErrors.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); String propertyName = (String) entry.getKey(); Object value = entry.getValue(); if (shouldAddError(propertyName, value)) { //normalement on prend un message par defaut depuis le bean XWorkConverter String message = XWorkConverter.getConversionErrorMessage(propertyName, stack); Object action =invocation.getAction(); //on peut definir a ce niveau un nouveau message par defaut mais ........ String defaultMessage = LocalizedTextUtil.findDefaultText(XWorkMessages.DEFAULT_INVALID_FIELDVALUE, ActionContext.getContext().getLocale(), new Object[]{ propertyName }); message=defaultMessage;
En fait j aimerais pouvoir mettre
classtype étant la classe de l'attribut dans la classe action.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 new Object[]{ propertyName , classetype });
J'ai eu beau regarder les codes sources et écumer les tutoriaux en livres ou du net je n'ai pas trouvé la classe exact ou a lieu les vérification de conversion, c'est a dire les classes ou sont appellées les methodes "convertValue(Map context, Object target, Member member, String property, Object value, Class toClass)" de la classe XWorkConverter...
Quelqu'un pourrait il m aider?
Je pense avoir un debut de piste qui est de directement récuperer les attributs depuis l'objet action que l on recupere en lancant un getters que l on crée a partir du nom de l attribut. Mais bien que je sache comment récuperer le nom du getters d'une facon generale je ne vois pas comment lancer la methode car l aciton que l on recupere n est pas spécifié.
Toute aide sera la bienvenue
Cordialement
Seraphon
Partager