views:

388

answers:

4

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.

+2  A: 

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

Dan
Thanks! this was what I needed
A: 

you can get HttpServletRequest in this style

(HttpServletRequest)RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()
AshkaN
A: 

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);
Markus
A: 

An easier way to access the locale is spring's LocaleContextHolder

Just call: LocaleContextHolder.getLocale()

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/i18n/LocaleContextHolder.html