【发布时间】:2014-05-02 16:31:11
【问题描述】:
我已经在 stackoverflow 上阅读了几个关于这个问题的帖子,但我还没有找到解决方案。
在我的 index.xhtml 模板中,我定义了一个导航和一个内容布局单元。
菜单是基本的<p:menu> 菜单。
用另一个网站填充内容面板,例如page1.xhtml 使用<p:commandButton> 效果很好。
使用<p:menuItem> 导航不起作用。我尝试设置ajax="false",将action 更改为actionListener。没有什么帮助。秘密在哪里? :)
index.xhtml:
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="50" id="top">
<h:form>
<ui:include src="/template/header.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="south" size="50">
<h:form>
<ui:include src="/template/footer.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="west" size="350" >
<h:form>
<ui:include src="/template/mainmenu.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center" >
<h:panelGroup id="contentPanel">
<ui:include src="#{navController.pageName}.xhtml" />
</h:panelGroup>
</p:layoutUnit>
</p:layout>
</h:body>
mainmenu.xhtml:
<h:body>
<h:form id="formMainMenu">
<p:menu>
<p:submenu label="Menu">
<p:menuitem value="Link I" action="#{navController.navigateTo}" ajax="false" update=":contentPanel" icon="ui-icon-disk">
<f:param name="navParam" value="/pages/page1" />
</p:menuitem>
</p:submenu>
</p:menu>
这有效:
<p:commandButton value="Link I" action="#{navController.navigateTo}" update=":contentPanel">
<f:param name="navParam" value="/pages/page1" />
</p:commandButton>
</h:form>
</h:body>
navController导航方式:
public void navigateTo()
{
String target = acesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("navParam");
setPageName(target);
}
【问题讨论】:
-
hmm.. 似乎连像
<p:menuitem value="Display Message" actionListener="#{navController.message}" update="messages" icon="ui-icon-disk" />这样的基本actionListener 也没有被调用。我处于调试模式,它永远不会跳转到消息方法:/当我把它放入时它就可以工作了.. -
在直接运行 mainmenu.xhtml 时,menuItem 上的 actionListener 适用于基本的
actionListener="#{navController.message}"- 而不是从 index.xhtml。
标签: jsf primefaces navigation menuitem