2011-01-24 3 views
1

J'utilise le résolveur local de session pour mon application. Je montre les langues dans la liste déroulante. Si l'utilisateur sélectionne l'une des langues, il repeuple toutes les valeurs de cette langue.LocaleResolver au printemps

<property name="interceptors"> 
    <list> 
     <ref bean="localeChangeInterceptor" /> 
    </list> 
</property> 

<bean id="localeChangeInterceptor" 
     class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="languageCode" /> 
</bean> 

<bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> 

Mais il ne le lit pas à partir de la session. Il considère toujours le paramètre defaultlanguage dans les paramètres du navigateur. Aidez s'il vous plaît à ce sujet.

+0

Comment vérifiez-vous que le local est défini dans la session (ou non)? – Ralph

+0

Lorsque l'utilisateur sélectionne un nouveau paramètre régional et soumet la page, ajoutez-vous le bon paramètre de requête à l'URL? Dans votre cas, vous avez spécifié un paramName de languageCode. Ainsi, l'URL de la requête doit ressembler à http://mysite.com/myPage?languageCode=en –

Répondre

5

Vous devez obtenir les paramètres régionaux de cette façon:

Locale loc=RequestContextUtils.getLocale(request); 
+5

Si la méthode du contrôleur est annotée avec @RequestMapping, vous pouvez simplement ajouter un paramètre Locale à la méthode et Spring le fournira automatiquement pour vous. . http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-arguments –

+0

@Kevin Stembridge: Je ferais seulement la déclaration, que C'est une idée de lit pour obtenir les paramètres régionaux directement à partir de la session. - Et bien sûr le paramétrage est encore bien meilleur que ce que j'ai écrit. – Ralph

0

En 4.0 printemps, nous pouvons également utiliser LocaleContextResolver.getLocale() méthode.