Est-ce que c'est possible?
Est-ce que c'est possible?
N'oubliez pas que l'eau ça rouille !
est votre ami !
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
Tu peux récupérer la locale dans une Action Struts comme ceci :
Tu peux aussi la modifier comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Locale locale=this.getLocale(request) ;
Pour accèder aux messages dans une Action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.setLocale(request,Locale.ENGLISH) ;
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
1
2 MessageResources messageResources=this.getResources(request) ; String libelle = messageResources.getMessage("cleDuMessage") ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part String libelle = messageResources.getMessage("Locale.ENGLISH","cleDuMessage") ;
Modératrice Java - Struts, Servlets/JSP, ...
En fait le souci c'est que j'utilise une iframe :
event.jsp :
eventMenuPopup.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>
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é....)....
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>
Bref, là il me met l'eurreur suivante :
etc.....
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)
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 !
Je ne connais pas ta version de Struts, mais es-tu sûre de ça ?
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.action.Action.LOCALE_KEY
Code : Sélectionner tout - Visualiser dans une fenêtre à part org.apache.struts.Globals.LOCALE_KEY
As-tu testé en remplaçant ton code :
par le mien :
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") ...
ç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.
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") ...
Petite remarque : je trouve dommage d'avoir du code Java dans les jsp quand on utilise Struts.
Modératrice Java - Struts, Servlets/JSP, ...
En fait j'ai essayé d'utiliser des bean:message de la manière suivante :Mais ca marche pas les truc aves des out.print, apparemment on ne peux pas utiliser les bean:message....
Code : Sélectionner tout - Visualiser dans une fenêtre à part out.println("<dt onclick=\"commandWithParam('"+tcmd.getIdCommand()+"')\"><bean:message key=\""+tcmd.getKeyLabelCommand()+"\"/></dt>");
Mais j'ai donc fait de la manière suivante :
Là ca marche!!!!!
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>
En fait il faut sortir du code java pour mettre les bean:message.....
N'oubliez pas que l'eau ça rouille !
est votre ami !
Bien sûr.Envoyé par AnneB
Et même les balises <dt> plutôt que de les mettre dans des out.println.
Modératrice Java - Struts, Servlets/JSP, ...
en effetest deprecated....
Code : Sélectionner tout - Visualiser dans une fenêtre à part org.apache.struts.action.Action.LOCALE_KEY
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 !
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, ...
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 !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager