我有这样的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 ...没有。
任何想法? 提前致谢 瑞克
答案 0 :(得分:6)
Primefaces menuitem在这种情况下有一个url属性:
url:点击menuitem时要导航的网址。
如果您没有使用“url”但想要使用“action”,那么请记住您正在发布帖子请求。
在这种情况下你应该
请参阅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;
}