Struts i18n & JSP

Struts i18n & JSP - Java - Programmation

Marsh Posté le 23-12-2003 à 17:31:46    

Bonjour a tous,
 
Je rencontre un probleme avec une JSP.
J'utilise le tag "fmt" de la taglib jstl....peut etre plus connu par ceux d'entre vous qui utilise le tag "message de l'i18n Struts.
 
Mon probleme est le suivant, j'ai un bout de scriplet qui n'est pas resolu lors de la compilation de ma JSP.
 
Comme je veux parametrer le language de ma JSP dynamiquement ( et donc que les tag "message" utilise le bon bundle, j'utilise le tag fmt:setLocale comme suit:
 
<fmt:setLocale value="<%=(String)session.getAttribute("language" )%>" />
 
Mais ca marche pô !
J'ai décompilé ma JSP et je trouve le code suivant:
 
 
_jspx_th_fmt_setLocale_0.setValue("<%=(String)session.getAttribute(\"language\" )%>" );
 
C'est a dire que le scriplet n'est pas interpreté !
Vous auriez pas une idée ?
 
Merci d'avance

Reply

Marsh Posté le 23-12-2003 à 17:31:46   

Reply

Marsh Posté le 23-12-2003 à 19:46:21    

bartleby a écrit :

Bonjour a tous,
 
Je rencontre un probleme avec une JSP.
J'utilise le tag "fmt" de la taglib jstl....peut etre plus connu par ceux d'entre vous qui utilise le tag "message de l'i18n Struts.
 
Mon probleme est le suivant, j'ai un bout de scriplet qui n'est pas resolu lors de la compilation de ma JSP.
 
Comme je veux parametrer le language de ma JSP dynamiquement ( et donc que les tag "message" utilise le bon bundle, j'utilise le tag fmt:setLocale comme suit:
 
<fmt:setLocale value="<%=(String)session.getAttribute("language" )%>" />
 
Mais ca marche pô !
J'ai décompilé ma JSP et je trouve le code suivant:
 
 
_jspx_th_fmt_setLocale_0.setValue("<%=(String)session.getAttribute(\"language\" )%>" );
 
C'est a dire que le scriplet n'est pas interpreté !
Vous auriez pas une idée ?
 
Merci d'avance


 
1)je ne suis pas un spécialiste UI mais il me semble que tu ne peux pas imbriquer un scriplet dans un taglib ... à vérifier  :sweat:  
 
2)en struts, le tag <bean:message key="...." /> utilise la locale stoquée dans la session sous le nom Action.LOCALE_KEY
Je suppose qu'avec <fmt:message /> il doit y avoir quelque chose de similaire.

Reply

Marsh Posté le 23-12-2003 à 21:53:45    

1/ on peut trés bien utiliser des scriptlets dans des taglibs, il suffit que le concepteur de la taglib l'ait autorisé.
 
2/ on ne peut effectivement pas utiliser de scriplet dans la taglib fmt pour la propriété value. Il faut utiliser EL (Expression Language), ie mettre la propriété dans la session, la requete ou le pageScope, puis appeler la variable comme suit:
<fmt:setLocale value="${pageScope.locale}"/>

Reply

Marsh Posté le 24-12-2003 à 12:05:46    

C'etait ca, merci _guigui_ , et a toi aussi ozark74 ;) !
 
Question subsidiaire: Pourquoi et comment ont-ils interdit les scriplets dans les tags fmt ?
 
Je vais verifier si c'est pareil pour tout les jstl....

Reply

Marsh Posté le 27-12-2003 à 23:51:48    

c'est opensource, je t'invite à télécharger les sources, ouvrir le descripteur xml, et lire une doc sur les taglibs  ;)

Reply

Marsh Posté le 30-12-2003 à 12:45:57    

sinon, on peut aussi juste modifier la tld et mettre le rttexpr à true ;)

Reply

Marsh Posté le 30-12-2003 à 16:07:31    

rooooo moi qui voulait le laisser chercher tout seul ;)  
bon remarque tu lui as laissé 3 jours, c'est bien déjà :lol:

Reply

Marsh Posté le 30-12-2003 à 19:57:37    

en meme temps s'il est à false, y'a ptet une raison, qu'il vaudrait mieux chercher à comprendre avant de changer et de se manger des effets de bords intempestifs


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 31-12-2003 à 00:39:52    

c'est pas trop génant de le modifier pour des taglibs
en fait, j'ai jamais compris pourquoi on mettait pas tout en rtexpr par défaut (sauf peut etre pour des questions de performance?)

Reply

Marsh Posté le 31-12-2003 à 18:19:07    

moi je dirais plutot que si le but des taglibs, c'est de pas faire de scriplets, autant ne pas en faire du tout et ne pas mettre de <%= ... %> partout... :ange:  
à part ca je vois pas :whistle:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed