JSF/PrimeFaces selectOneMenu 更改视图 ID [英] JSF/PrimeFaces selectOneMenu change view-id

查看:21
本文介绍了JSF/PrimeFaces selectOneMenu 更改视图 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.xhtmlpage2.xhtmlpage3.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆