Jsf 使用MenuItem进行PrimeFaces导航

Jsf 使用MenuItem进行PrimeFaces导航,jsf,primefaces,Jsf,Primefaces,我有一个PrimeFaces 3.4菜单栏,如下所示: <h:form> <p:menubar> <p:submenu label="File"> <p:submenu label="New"> <p:menuitem value="Go" id="page1LinkID" action="#{navBean.goNav}">

我有一个PrimeFaces 3.4菜单栏,如下所示:

<h:form>
    <p:menubar>
        <p:submenu label="File">
            <p:submenu label="New">
                <p:menuitem value="Go" id="page1LinkID" action="#{navBean.goNav}">     
                    <f:param id="page1ParamID" name="pageViewID" value="Page1"/>
                </p:menuitem>
                <p:menuitem value="Other" url="#"/>
            </p:submenu>
        </p:submenu>
    </p:menubar>
</h:form>
问题是它不起作用,没有例外,什么都没有。我最初试着把这个动作变成这样。。。 将goNav更改为void…什么都没有

有什么想法吗? 提前谢谢 瑞克

试试这个

   public String goNav() {
       FacesContext context = FacesContext.getCurrentInstance();
       String selectedPageViewId = context.getExternalContext().getRequestParameterMap().get("pageViewId");
       if (selectedPageViewId.equalsIgnoreCase("page1")){
           includedPage = "test.xhtml?redirect=true";

       }
       return includedPage;
}

Primefaces menuitem在这种情况下具有url属性:

url:单击菜单项时要导航的url

如果您没有使用“url”,但希望使用“action”,那么请记住您正在执行post请求

在这种情况下,你应该

  • 将?faces redirect=true添加到返回字符串中,如“test.xhtml?faces redirect=true”
  • 在菜单项中设置ajax=false,如

  • 从primefaces的首席开发人员处可以看到这一点

    您使用菜单栏的目的是什么?
       public String goNav() {
           FacesContext context = FacesContext.getCurrentInstance();
           String selectedPageViewId = context.getExternalContext().getRequestParameterMap().get("pageViewId");
           if (selectedPageViewId.equalsIgnoreCase("page1")){
               includedPage = "test.xhtml?redirect=true";
    
           }
           return includedPage;
    }