Comment obtenir les paramètres régionaux du visiteur dans JSP en utilisant Spring 3's SessionLocaleResolver

StackOverflow https://stackoverflow.com/questions/7368863

Question

J'ai besoin d'obtenir un lieu de visiteur dans mes pages JSP afin que je puisse afficher correctement un menu déroulant avec une liste de langues et avoir la langue sélectionnée en fonction de leur lieu actuel. Normalement, je pourrais faire quelque chose comme ${pageContext.request.locale}.

Le problème, je pense, c'est que cela ne me donnera que le lieu en fonction des en-têtes de demande de l'utilisateur (ce que le navigateur envoie). Mais l'utilisateur a peut-être changé sa langue / lieu, j'ai donc besoin d'utiliser le mécanisme de Spring qui examine également la session:

RequestContextUtils.getLocale(request).toString();

Mais il n'est pas si facile d'accéder à celui-ci dans une page JSP et de faire fonctionner le code JSP avec.

Ou existe-t-il un autre mécanisme plus facile pour afficher un menu déroulant des langues à un utilisateur? Spring stocke-t-il le lieu actuel dans un objet facilement accessible depuis JSP?

Était-ce utile?

La solution

Lorsque vous utilisez le SessionLocaleResolver, le paramètre régional actuel est stocké dans la session à l'aide d'un nom d'attribut spécifié dans la classe SessionLocaleResolver. La référence à SessionLocaleResolver est stockée dans la demande à l'aide d'un autre nom d'attribut (org.springframework.web.servlet.dispatcherservlet # locale_resolver_bean_name).

Je ne vois pas un moyen facile d'obtenir le lieu directement dans la page JSP sans utiliser le code Java.

Je vais chercher les paramètres régionaux actuels et créer la liste des langages sélectionnables dans le contrôleur et l'ajouter au modèle.

Cela rend le code testable et déplace le code Java du JSP dans le contrôleur.

Autres conseils

Pour nous

${pageContext.response.locale}

a fait l'affaire. Cette propriété suit ce qui a été mis en place par le résolveur local de Spring.

Solution de ligne ..

RequestContextUtils.getLocale(request)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top