IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Pb avec MessageResources [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Pb avec MessageResources
    Bonjour,
    J'essaye de récupérer un message dans un messageResources dans un code Java.
    Malheureusement ceci me déclanche une exception, je ne vois pas pourquoi !!!



    Dans mon fichier de Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MessageResources msgRessources = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
    String BoutonPrecedentLibelle = msgRessources.getMessage(request.getLocale(),"saisiePiste.boutonPrecedent.libelle");
    Dans mon fichier de message: piste.messages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saisiePiste.boutonPrecedent.libelle=précédent
    Dans struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <message-resources parameter="/com/orange/webbe/piste/message/Piste" null="false" key="MessagesPiste"/>
    Message d'erreur qui correspond à la ligne de la form
    msgRessources.getMessage(request.getLocale(),"saisiePiste.boutonPrecedent.libelle");:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    	at com.orange.webbe.piste.form.InfosGeneralesForm.validate(InfosGeneralesForm.java:45)
    Cette erreur s'affiche dés que j'éffectue un get sur "msgRessources"

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Cela signifie que ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageResources msgRessources = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
    renvoie null au lieu de renvoyer un objet de type MessageResources.

    Je pense que c'est lié au fait que tu as affecté une clé à ton fichier des messages.
    Cela est-il justifié ? As-tu plusieurs fichiers de messages définis dans le struts-config.xml ? En as-tu défini un sans attribut key ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Nous avons plusieurs <message-resources>, chacun à une clé en effet !

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    J'ai essayer en faisant une copie de mon messages-resources sans la key="MessagesPiste".
    Et du coup ça fonctionne !

    C'est donc pas possible avec une clé ?
    Comment fait on pour choisir un <messages-ressources> ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <message-resources parameter="/com/orange/webbe/piste/message/Piste" />

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Il est normal que cela fonctionne quand tu définis un fichier des messages sans attribut key car en codant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageResources msgRessources = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
    tu vas chercher le fichier des messages par défaut, soit celui qui n'a pas d'attribut key.
    D'ailleurs, il me semble que tu devrais en avoir un sans attribut key.

    Sinon, je sais comment récupérer un MessageResources en fonction de sa clé dans une Action, soit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageResources messageResources=this.getResources(request,"valeurDeLattributKey") ;
    mais dans une ActionForm, je ne vois pas.

    D'ailleurs, pourrais-tu préciser pourquoi tu as besoin de récupérer un message de cette façon dans l'ActionForm avec éventuellement le bout de code correspondant ?

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, il y a une solution en utilisant la classe ResourceBundle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ResourceBundle resourceBundle= ResourceBundle.getBundle("com.orange.webbe.piste.message.Piste",request.getLocale());
    String BoutonPrecedentLibelle = resourceBundle.getString("saisiePiste.boutonPrecedent.libelle"));
    Seul bémol : ça t'oblige à coder en dur le nom du fichier properties.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup !
    Tu m'a été d'une grande aide...

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, après avoir fouillé un peu dans le code Struts, pour récupérer l'objet de type MessageResources référencé dans le struts-config.xml sous l'attribut key de valeur MessagesPiste, il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageResources msgRessources = (MessageResources) request.getAttribute("MessagesPiste");
    C'était tout simple.

    Ceci signifie donc qu'il faut bien choisir la valeur qu'on met dans l'attribut key pour ne pas qu'il y ait de conflit avec un autre objet que l'on mettrait dans le scope request.

    Dans ton cas, MessagesPiste semble tout à fait approprié.

    L'avantage par rapport à la solution du ResourceBundle c'est que tu codes en dur la clé du fichier des messages et non son nom avec son chemin d'accès.
    Je pense que c'est plus propre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec MessageResources
    Par al3alwa dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/01/2008, 05h56
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo