Я пытаюсь добавить локализацию в свое веб-приложение, созданное с помощью Spring WebFlow и facelets. Я хочу добавить поддержку английского и французского языков. Я создал два файла messages_fr.properties и messages_en.properties.
Мой шаблон, который я использую для всех своих страниц jsf, имеет следующий код для определения пакета сообщений и две ссылки для переключения между французским и английским.
<f:loadBundle basename="messages" var="msg" />
...
<h:commandLink id="changeLocaleFr" action="changeLocale"
class="flag fr">
<f:param name="ln" value="fr" />
</h:commandLink>
<h:commandLink id="changeLocaleEn" action="changeLocale"
class="flag en">
<f:param name="ln" value="en" />
</h:commandLink>
Я настроил локальный распознаватель сеансов
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
и перехватчик локальных изменений
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="ln" />
</bean>
, который я добавил к своему отображению обработчика потока
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name="flowRegistry" ref="flowRegistry" />
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"></ref>
</list>
</property>
<property name="order" value="0" />
</bean>
В моем потоке есть глобальный переход для changeLocale
<global-transitions>
<transition on="changeLocale" />
</global-transitions>
Все это почти работает. Когда я нажимаю на одну из ссылок, локаль меняется. Но я не вижу изменений сразу, я должен вручную обновить или перейти к другому представлению, чтобы заново отобразить страницу с использованием нового языка. Как я могу внести изменения сразу после нажатия на ссылку?