2010-06-09 5 views
4

J'ai une page .jsp que l'utilisateur charge directement. La demande avec une URL comme ce qui suit: http://www.example.com/myfile.jsp?country=CA&language=frComment définir les paramètres régionaux de l'utilisateur sur un JSP?

Dans la JSP, je tire l'URL GET paramètres et tenter de définir les paramètres régionaux en les utilisant comme suit:

 
<% 
    String myLanguage = request.getParameter("language"); 
    String myCountry = request.getParameter("country"); 

    Locale myLocale = new Locale(myLanguage, myCountry); 
    pageContext.setAttribute("myLocale", myLocale, PageContext.PAGE_SCOPE); 
%> 
<fmt:setLocale value="${myLocale}" scope="page" /> 

Il y a plusieurs endroits dans la JSP qui affiche ensuite un message extrait d'un regroupement de ressources localisé à l'aide de <bean:message bundle="ts" key="..." /> à partir de Struts.

A la première requête pour cette page (après avoir changé la langue dans l'URL), il est renvoyé en anglais américain (le paramètre régional par défaut), puis les actualisations suivantes renvoient le contenu correctement localisé.

Répondre

2

Je ne fais pas Struts, mais Google m'apprend que vous devez définir le Locale comme attribut de session avec Globals.LOCALE_KEY comme clé.

session.setAttribute(Globals.LOCALE_KEY, myLocale); 

En fait, vous n'avez pas besoin JSTL fmt:setLocale. Cela dit, je le ferais dans un seul Filter plutôt que dans toutes les JSP.

+2

Oh, la joie de chercher en utilisant les mauvais critères, en pensant que vous en savez plus que vous. – ebynum

+0

Vous êtes les bienvenus :) – BalusC

+0

À titre de remarque: la façon traditionnelle de définir les paramètres régionaux dans Struts2 est d'utiliser l'intercepteur [* I18nInterceptor *] (http://struts.apache.org/maven/xwork-core/apidocs/index .html? com/opensymphony/xwork2/interceptor/I18nInterceptor.html). Plus d'élaboration dans ce post: http://stackoverflow.com/a/19546961/814702 – informatik01

Questions connexes