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 :

Récupération du message ressources et de la locale à partir de l'objet HttpSession


Sujet :

Struts 1 Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut Récupération du message ressources et de la locale à partir de l'objet HttpSession
    Est-ce que c'est possible?
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  2. #2
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 109
    Points
    109
    Par défaut
    attention c'est message resource avec un seul 's'. J'ai déjà fait la même erreur qui m'a fait perdre une apres midi !
    JAVA le dire a tout le monde

  3. #3
    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
    Tu peux récupérer la locale dans une Action Struts comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Locale locale=this.getLocale(request) ;
    Tu peux aussi la modifier comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setLocale(request,Locale.ENGLISH) ;
    Pour accèder aux messages dans une Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MessageResources messageResources=this.getResources(request) ;
    String libelle = messageResources.getMessage("cleDuMessage") ;
    Et pour récupérer le message avec une autre locale que celle par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String libelle = messageResources.getMessage("Locale.ENGLISH","cleDuMessage") ;
    Modératrice Java - Struts, Servlets/JSP, ...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    En fait le souci c'est que j'utilise une iframe :
    event.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="divIframe">
    <iframe id="iframe" src="jsp/eventMenuPopup.jsp" ></iframe >
    </div>
    eventMenuPopup.jsp :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <div id="menu">
    	<dl>
    		<%	String idE = request.getParameter("idE");
    			Locale locale = (Locale) session.getAttribute(org.apache.struts.action.Action.LOCALE_KEY);
    			ResourceBundle resourceBundle = ResourceBundle.getBundle("ApplicationRessources", locale);
    			if(idE!=null && !idE.equals("")){
    				session.setAttribute("idElement",idE);
    				ApiIdexAnne api=ApiIdexAnne.getInstance();
    				api.addConsultedElementToTheList(idE, session.getId());
    				ArrayList commandes = api.getCommandEnabledOnElement(idE);
    				for(int i=0; i<commandes.size();i++){
    					TupleCommandParam tcmd = (TupleCommandParam)commandes.get(i);
    					if(tcmd.getParametersFacultatives()!=null && ((ArrayList)tcmd.getParametersFacultatives()).size()!=0){
    						out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\">"+resourceBundle.getString(tcmd.getKeyLabelCommand())+"</dt>");
    					}
    					else{
    						out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\">"+resourceBundle.getString(tcmd.getKeyLabelCommand())+"</dt>");
    					}
    				}
    			}
    		%>
    	</dl>
    	<dl>
    		<%	String toAcq = (String)request.getParameter("ToAcq");
    			if(toAcq!=null && toAcq.equals("1")){
    				out.println("<dt onclick=\"skipAlarm()\">"+resourceBundle.getString("cmd.skipalarm")+"</dt>");
    			}
    		%>
    	</dl>
    </div>
    Bon, je sais que normalement ApplicationRessources s'écrit ApplicationResources, mais en fait comme j'ai déjà tout paramétré dans les fichiers pour que ca merche....pas de problème (de toutes facon j'aurais aussi bien pu appeler mon fichier toto pourvu que j'ai bien paramétré ca aurait marché....)....
    Bref, là il me met l'eurreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    java.util.MissingResourceException: Can't find bundle for base name ApplicationRessources, locale fr
    	at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
    	at java.util.ResourceBundle.getBundleImpl(Unknown Source)
    	at java.util.ResourceBundle.getBundle(Unknown Source)
    	at org.apache.jsp.jsp.eventMenuPopup_jsp._jspService(eventMenuPopup_jsp.java:97)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    etc.....
    Mes fichiers resources sont les suivants :
    ApplicationRessources_en.properties
    ApplicationRessources.properties
    ... et pour ce qui est de l'internationnalisation ca marche bien : navigateur en langue anglaise => messages de ApplicationRessources_en.properties, et pour les autres langues il prend bien les messages dans ApplicationRessources.properties....

    Normalement en locale fr il devrait prendre le ApplicationRessources.properties vu qu'il n'existe pas de fichier ApplicationRessources_fr.properties....
    Mais il ne le trouve pas.....visiblement.....
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Je ne connais pas ta version de Struts, mais es-tu sûre de ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.action.Action.LOCALE_KEY
    qui a été deprecated et remplacé en 1.1 je crois par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.Globals.LOCALE_KEY

  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
    As-tu testé en remplaçant ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Locale locale = (Locale) session.getAttribute(org.apache.struts.action.Action.LOCALE_KEY);
    ResourceBundle resourceBundle = ResourceBundle.getBundle("ApplicationRessources", locale);
    ...
    resourceBundle.getString("cmd.skipalarm")
    ...
    par le mien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Locale locale=this.getLocale(request) ;
    MessageResources messageResources=this.getResources(request) ;
    ...
    messageResources.getMessage(locale,"cmd.skipalarm") 
    ...
    ça évite de coder en dur le nom du fichier des messages et en plus, tu récupères automatiquement la locale par défaut.

    Petite remarque : je trouve dommage d'avoir du code Java dans les jsp quand on utilise Struts.
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    En fait j'ai essayé d'utiliser des bean:message de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\"><bean:message key=\""+tcmd.getKeyLabelCommand()+"\"/></dt>");
    Mais ca marche pas les truc aves des out.print, apparemment on ne peux pas utiliser les bean:message....
    Mais j'ai donc fait de la manière suivante :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <div id="menu">
    	<dl>
    		<%	String idE = request.getParameter("idE");
    			//Locale locale = (Locale) session.getAttribute(org.apache.struts.action.Action.LOCALE_KEY);
    			//ResourceBundle resourceBundle = ResourceBundle.getBundle("ApplicationRessources", locale);
    			if(idE!=null && !idE.equals("")){
    				session.setAttribute("idElement",idE);
    				ApiIdexAnne api=ApiIdexAnne.getInstance();
    				api.addConsultedElementToTheList(idE, session.getId());
    				ArrayList commandes = api.getCommandEnabledOnElement(idE);
    				for(int i=0; i<commandes.size();i++){
    					TupleCommandParam tcmd = (TupleCommandParam)commandes.get(i);
    					if(tcmd.getParametersFacultatives()!=null && ((ArrayList)tcmd.getParametersFacultatives()).size()!=0){
    						out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\">");
    		%>
    						<bean:message key="<%=tcmd.getKeyLabelCommand()%>"/>
    		<%				out.println("</dt>");
    					}
    					else{
    						out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\">");
    		%>				
    						<bean:message key="<%=tcmd.getKeyLabelCommand()%>"/>
    		<%				out.println("</dt>");
    					}
    				}
    			}
    		%>
    	</dl>
    	<dl>
    		<%	String toAcq = (String)request.getParameter("ToAcq");
    			if(toAcq!=null && toAcq.equals("1")){
    				out.println("<dt onclick=\"skipAlarm()\">");
    		%>
    				<bean:message key="cmd.skipalarm"/>
    		<%		out.println("</dt>");
    			}
    		%>
    	</dl>
    </div>
    Là ca marche!!!!!
    En fait il faut sortir du code java pour mettre les bean:message.....
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  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
    Citation Envoyé par AnneB
    En fait il faut sortir du code java pour mettre les bean:message.....
    Bien sûr.
    Et même les balises <dt> plutôt que de les mettre dans des out.println.
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    en effet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.struts.action.Action.LOCALE_KEY
    est deprecated....
    Mais c'est bon, j'ai pu me débrouiller autrement!!!

    Je n'ai pas testé ton code c_nvy car je suis partie sur l'idée d'utiliser les bean:message (en fait j'avais déjà essayé sans succès mais j'ai décidé de m'acharner encore un peu...)

    Merci à tous pour votre aide...
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  10. #10
    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
    C'est sûr qu'utiliser les tags bean:message est plus logique.
    Mais quand tu as posé la question la première fois, tu n'avais pas précisé que tu en avais besoin dans une jsp.
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    oui, c'est vrai dsl , mais c'est parce que j'avais essayé déjà (mais en les mettant dans les out.print)...et ca ne marchait pas....

    C'est vrai que des fois c'est pas évident de préciser la question parce que le contexte de notre question est assez évident pour nous....

    Bref, comme quoi....toujours bien réfléchir avant de poster pour être le plus précis possible
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

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

Discussions similaires

  1. bundle de message-ressource
    Par yozine dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/07/2007, 22h16
  2. [Oracle 9i]Récupération des messages d'erreurs
    Par Hugues_78 dans le forum SQL
    Réponses: 1
    Dernier message: 09/11/2006, 15h29
  3. récupération des message d'erreurs dans une jsp
    Par clement42 dans le forum Struts 1
    Réponses: 17
    Dernier message: 23/10/2006, 11h59
  4. récupération du message à la fin d'une requête
    Par beab1802 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 21/04/2006, 22h33
  5. [SQL2K] Débutant, Récupération du message d'erreur
    Par WDEROO dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/03/2006, 15h53

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