在Spring WebFlow中访问HttpServletRequest对象

时间:2009-12-29 00:52:57

标签: java spring-webflow

我正在使用WebFlow,并希望将当前的Locale添加到流中。 我已经有了一个resolveLocale方法,可以使用此签名执行此操作:

public Locale resolveLocale (HttpServletRequest request);

我想在我的WebFlow XML中添加类似的内容:

<on-start>
<evaluate expression="localeService.resolveLocale(???)" result="flowScope.locale"/>
</on-start>

现在,我不知道该放什么???参数部分。
有任何想法吗?谢谢你的阅读。

4 个答案:

答案 0 :(得分:4)

我没有使用过Web Flow,但是假设它与Spring的其余部分相似,你可以使用RequestContextHolder。快速谷歌搜索表明,Web Flow甚至可以为您提供web flow specific RequestContextHolder - 更好的

答案 1 :(得分:3)

访问语言环境的更简单方法是spring的LocaleContextHolder

只需调用:LocaleContextHolder.getLocale()

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

答案 2 :(得分:2)

你可以用这种风格获得HttpServletRequest

(HttpServletRequest)RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()

答案 3 :(得分:1)

感谢您的提示。我在我的服务中使用以下行(我的SWF-config使用SessionLocaleResolver):

Locale locale = (Locale) RequestContextHolder.getRequestAttributes().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, RequestAttributes.SCOPE_SESSION);