доступ к объекту HttpServletRequest в Spring WebFlow
-
21-09-2019 - |
Вопрос
Я использую WebFlow и хотел бы добавить текущий языковой стандарт в поток.У меня уже есть методsolveLocale, который делает это с помощью этой подписи:
public Locale resolveLocale (HttpServletRequest request);
Я хотел бы добавить что-то подобное в свой XML WebFlow:
<on-start>
<evaluate expression="localeService.resolveLocale(???)" result="flowScope.locale"/>
</on-start>
Теперь я не знаю, что поставить в ???параметрическая часть.
Есть идеи?Спасибо за прочтение.
Решение
Я не использовал Web Flow, но, предполагая, что он похож на остальную часть Spring, для этого вы можете использовать RequestContextHolder.Быстрый поиск в Google показывает, что Web Flow даже дает вам RequestContextHolder для конкретного веб-потока - даже лучше
Другие советы
Более простой способ доступа к локали — это Spring LocaleContextHolder.
Просто позвони:LocaleContextHolder.getLocale()
вы можете получить HttpServletRequest в этом стиле
(HttpServletRequest)RequestContextHolder.getRequestContext().getExternalContext().getNativeRequest()
Спасибо за ваши подсказки.Я использую следующую строку в своем сервисе (моя SWF-конфигурация использует SessionLocaleResolver):
Locale locale = (Locale) RequestContextHolder.getRequestAttributes().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, RequestAttributes.SCOPE_SESSION);