kar*_*kpl 4 navigation jsf selectonemenu primefaces jsf-2
我正在使用JSF2和PrimeFaces3.我如何编写selectOneMenu,当他更改菜单中的选项时,会调用JSF导航将用户重定向到另一个页面?
附加一个ajax监听器并让它导航NavigationHandler.
例如
<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>
Run Code Online (Sandbox Code Playgroud)
(上面的例子需要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");
}
Run Code Online (Sandbox Code Playgroud)
这?faces-redirect=true不是必需的,但它有效地发送重定向,以便浏览器地址栏中的URL将正确更改,这对于用户体验和页面的书签性更好.