accessing HttpServletRequest object in Spring WebFlow
-
21-09-2019 - |
Question
I am using WebFlow and would like to add the current Locale into the flow. I already have a resolveLocale method that does this with this signature:
public Locale resolveLocale (HttpServletRequest request);
I would like to add something like this in my WebFlow XML:
<on-start>
<evaluate expression="localeService.resolveLocale(???)" result="flowScope.locale"/>
</on-start>
Now, I don't know what to put in the ??? parameter part.
Any ideas? Thanks for reading.
Solution
I haven't used Web Flow, but presuming it's similar to the rest of Spring, you can use the RequestContextHolder for this. A quick Google search suggests that Web Flow even gives you a web flow specific RequestContextHolder - even better
OTHER TIPS
An easier way to access the locale is spring's LocaleContextHolder
Just call: LocaleContextHolder.getLocale()
you can get HttpServletRequest in this style
(HttpServletRequest)RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()
Thanks for your hints. I'm using the following line in my service (my SWF-config uses the SessionLocaleResolver):
Locale locale = (Locale) RequestContextHolder.getRequestAttributes().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, RequestAttributes.SCOPE_SESSION);