JSF/PrimeFaces selectOneMenu 更改 View ID

标签 jsf jsf-2 navigation primefaces selectonemenu

我正在使用 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>

(上面的例子期望 page1.xhtmlpage2.xhtmlpage3.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 将正确更改,这对用户体验和页面的书签性更好。

关于JSF/PrimeFaces selectOneMenu 更改 View ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8255472/

相关文章:

jquery 动画高度, "from bottom to top",在顶部之前停止

java - 消息包间歇性地无法正确渲染

jsf - 如何在JSF中的表中动态添加一行?

java - Spring Webflow对两种类型的用户进行身份验证

jsf - <pe :exporter> showcase 中 #{exporterController.customExporter} 的实现在哪里

java - PrettyFaces 和 JSF 2 : Do we always need to pass parameters to the URL to retrieve them?

css - PrimeFaces:如何覆盖 CSS 类

java - 具有可定制内容的 JSF 迭代复合组件

android - 导航回 fragment 时恢复回收器 View 状态 - 使用 jetpacks 导航架构

安卓导航栏