JSF/PrimeFaces selectOneMenu 更改视图 ID [英] JSF/PrimeFaces selectOneMenu change view-id
问题描述
我正在使用 JSF2 和 PrimeFaces3.当用户更改菜单中的选项时,我如何编写将调用 JSF 导航以将用户重定向到另一个页面的 selectOneMenu?
I'm using JSF2 and PrimeFaces3. How can I write selectOneMenu that would invoke JSF navigation to redirect user to another page when he change option in menu?
推荐答案
附加一个 ajax 监听器,让它通过 NavigationHandler
.
Attach an ajax listener and let it navigate by 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>
(上面的示例需要 page1.xhtml
、page2.xhtml
和 page3.xhtml
在同一上下文中;您可以甚至改为 <f:selectItems>
)
(the above example expects page1.xhtml
, page2.xhtml
and page3.xhtml
in the same context; you can even make it a <f:selectItems>
instead)
与
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 会正确更改,这对用户体验和页面的可收藏性更好.
The ?faces-redirect=true
is not necessary, but it effectively sends a redirect so that the URL in browser address bar will properly change which is better for user experience and bookmarkability of the pages.
这篇关于JSF/PrimeFaces selectOneMenu 更改视图 ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!