Выполнить метод перед загрузкой страницы JSF
Я извлекаю язык пользователя из базы данных. Когда пользователь входит в систему, страница должна отображаться на этом языке. Так что для этого я использую приведенный ниже код в JSF
<f:metadata>
<f:event type="preRenderView" listener="#{language.preferredLocale}"/>
</f:metadata>
<ui:define name="content_pane">
<f:view locale="#{language.localeCode}"/>
</ui:define>
//language bean code is
public void preferredLocale(ComponentSystemEvent e){
// code to retrieve locale for particular user
}
Но приведенный выше код не работает для установки локали на странице загрузки. Есть ли другой способ установить локаль на странице загрузки?
2 ответа
Это действительно не правильный путь. Тогда уже слишком поздно. Вы должны убедиться, что <f:view locale>
уже установлен правильно.
В любом случае, есть несколько способов добиться этого, в зависимости от вашего текущего дизайна приложения. Самый простой из них, вероятно, будет следующим:
@ManagedBean
@RequestScoped
public void LoginBean {
@ManagedProperty("#{localeBean}")
private LocaleBean localeBean;
public void submit() {
User user = userService.find(username, password);
if (user != null) {
localeBean.setLanguage(user.getPreferences().getLanguage());
// ...
}
// ...
}
// ...
}
Использовать этот
<f:view beforePhase=#{bean.viewBeforePhase} >