PrimeFaces使用MenuItem导航

时间:2013-04-15 14:13:18

标签: 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}">     
                    <f:param id="page1ParamID" name="pageViewID" value="Page1"/>
                </p:menuitem>
                <p:menuitem value="Other" url="#"/>
            </p:submenu>
        </p:submenu>
    </p:menubar>
</h:form>

支持bean就像这样

@ManagedBean
@RequestScoped
public class navBean {

/**
 * Creates a new instance of navBean
 */
private String includedPage = "contentMain.xhtml";
public navBean() {
}
public String getPage(){
    return includedPage;
}
public void setPageName(){
    this.includedPage = includedPage;
}

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

问题是它不起作用,没有例外。我最初尝试将动作放入这样的... 将goNav更改为void ...没有。

任何想法? 提前致谢 瑞克

2 个答案:

答案 0 :(得分:6)

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

  

url:点击menuitem时要导航的网址。

如果您没有使用“url”但想要使用“action”,那么请记住您正在发布帖子请求。

在这种情况下你应该

  1. 将??? faces-redirect = true添加到返回的字符串中,例如“test.xhtml?faces-redirect = true”
  2. 在您的菜单项中设置ajax = false,例如
  3. 请参阅primefaces的首席开发人员的answer

答案 1 :(得分:0)

试试这个

   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;
}