<h:link>
и <h:button>
отправляют запрос GET, а не запрос POST.Значение outcome
должно указывать на целевой вид.Вам необходимо установить параметр вида и выполнить действие в целевом представлении с помощью <f:viewParam>
и <f:event type="preRenderView">
.
<h:button outcome="welcome" value="#{appMessage['link.label.language.english']}">
<f:param name="selectedLanguage" value="en" />
</h:button>
с помощью welcome.xhtml
(проверка не указана)
<f:metadata>
<f:viewParam name="selectedLanguage" value="#{languageController.currentLanguage}" />
<f:event type="preRenderView" listener="#{languageController.changeLanguage}" />
</f:metadata>
и в компоненте
public void changeLanguage() {
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.getViewRoot().setLocale(new Locale(currentLanguage));
}
См. Также: