l'accès à l'objet HttpServletRequest au printemps WebFlow
-
21-09-2019 - |
Question
J'utilise WebFlow et voudrais ajouter la configuration locale dans le flux. J'ai déjà une méthode resolveLocale qui fait cela avec cette signature:
public Locale resolveLocale (HttpServletRequest request);
Je voudrais ajouter quelque chose comme ça dans mon WebFlow XML:
<on-start>
<evaluate expression="localeService.resolveLocale(???)" result="flowScope.locale"/>
</on-start>
Maintenant, je ne sais pas quoi mettre dans le ??? partie paramètre.
Des idées? Merci pour la lecture.
La solution
Je ne l'ai pas utilisé des flux Web, mais en supposant qu'il est similaire au reste du printemps, vous pouvez utiliser le RequestContextHolder pour cela. Une recherche rapide sur Google suggère que le Web flux vous donne même un flux Web RequestContextHolder spécifique - encore mieux
Autres conseils
Un moyen plus facile d'accéder à l'environnement local est LocaleContextHolder de printemps
Il suffit d'appeler: LocaleContextHolder.getLocale ()
vous pouvez obtenir HttpServletRequest dans ce style
(HttpServletRequest)RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()
Merci pour vos conseils. J'utilise la ligne suivante dans mon service (mon SWF-config utilise le SessionLocaleResolver):
Locale locale = (Locale) RequestContextHolder.getRequestAttributes().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, RequestAttributes.SCOPE_SESSION);