使用 <p:MenuItem 的 PrimeFaces 模板导航>



我已经在stackoverflow上读了几个关于这个问题的线程,但我还没有找到解决方案。

在index.xhtml模板中,我定义了一个导航和一个内容布局单元。菜单是基本的<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);
}

(问题编辑转换为答案)

OP写:

嗯. .似乎即使是像

这样的基本actionListener
<p:menuitem value="Display Message" actionListener="#{navController.message}" update="messages" icon="ui-icon-disk" />

没有被调用。我在调试模式,它永远不会跳转到消息方法:/当我把它放入<p:commandButton>它只是工作..

menuItem上的actionListener在直接运行mainmenu.xhtml时适用于基本actionListener="#{navController.message}" -而不是从index.xhtml运行。

我终于通过从我的mainmenu.xhtml中删除<h:form id="formMainMenu"> </h:form>标签解决了这个问题。

解释为什么这对commandButton有效,而不是menuItem,将是伟大的!谢谢!

相关内容

  • 没有找到相关文章

最新更新