Присоедините слушателя ajax и позвольте ему перемещаться по NavigationHandler
.
* 1006 Е.Г. *
<h:form>
<h:selectOneMenu value="#{navigator.outcome}">
<f:selectItem itemLabel="Select page..." />
<f:selectItem itemValue="page1" itemLabel="Page 1" />
<f:selectItem itemValue="page2" itemLabel="Page 2" />
<f:selectItem itemValue="page3" itemLabel="Page 3" />
<f:ajax listener="#{navigator.navigate}" />
</h:selectOneMenu>
</h:form>
(в приведенном выше примере ожидаются page1.xhtml
, page2.xhtml
и page3.xhtml
в одном и том же контексте; вместо этого вы можете сделать его <f:selectItems>
)
с
private String outcome;
public void navigate() {
FacesContext context = FacesContext.getCurrentInstance();
NavigationHandler navigationHandler = context.getApplication().getNavigationHandler();
navigationHandler.handleNavigation(context, null, outcome + "?faces-redirect=true");
}
?faces-redirect=true
не является необходимым, но он эффективно отправляет перенаправление, так что URL в адресной строке браузера будет правильно меняться, что лучше для удобства пользователей и возможности закладки страниц.