我已经在stackoverflow上读了几个关于这个问题的线程,但我还没有找到解决方案。
在我的index.xhtml模板中,我定义了一个导航和一个内容layoutUnit。
菜单是基本的<p:menu>
菜单。
使用其他网站填写内容面板,例如使用<p:commandButton>
的page1.xhtml效果很好。
<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);
}
答案 0 :(得分:0)
(Question edit converted to an answer)
OP写道:嗯..似乎即使是基本的actionListener
喜欢<p:menuitem value="Display Message" actionListener="#{navController.message}" update="messages" icon="ui-icon-disk" />
未被调用。我处于调试模式,它从不跳转到消息方法:/当我把它放到
<p:commandButton>
时,它才能正常工作..actionListener
上的{p>menuItem
适用于直接运行actionListener="#{navController.message}"
的基本mainmenu.xhtml
- 而不是index.xhtml
。我终于通过从
<h:form id="formMainMenu"> </h:form>
删除mainmenu.xhtml
标记来解决问题。解释为什么这适用于
commandButton
但不适用于menuItem
会很棒!谢谢!