RichFaces rich:panelMenu在a4j:include'd时停止工作

时间:2010-02-25 16:07:36

标签: java richfaces

this previously asked question开始,我注意到当我将rich:panelMenu(在index.jsp页面中工作正常时)移动到another.jsp然后将其包含在index.jsp中时1}}使用a4j:include标记,rich:panelMenu功能停止工作。

这是一个错误吗?

编辑1

在回应代码并进行一些隔离测试后,问题似乎源于来自panelMenu的rich:dataTable的另一个标签中rich:tabPanel的共存。

如果我的index.jsp包含使用演示代码(bean中的inc)的默认简单panelMenu,它按预期工作:

<f:view>
    <rich:page pageTitle="title" markupType="xhtml">
        <h:outputText id="setup" value="#{MyBacking.setup}" />
        <rich:toolBar height="35" itemSeparator="line">
            <rich:toolBarGroup location="left">
                <a4j:form>
                    <a4j:outputPanel id="panel">
                        <h:outputText style="text-align: center" value="Node Select " />
                        <h:selectOneMenu id="nodes" value="#{MyBacking.chosenNode}">
                            <f:selectItems value="#{MyBacking.nodes}" />
                        </h:selectOneMenu>
                        <a4j:commandButton value="Retrieve"
                            reRender="panel,contentPanel"
                            onclick="this.disabled=true" oncomplete="this.disabled=false" />
                    </a4j:outputPanel>
                </a4j:form>
            </rich:toolBarGroup>
        </rich:toolBar>
<!-- added start -->
        <h:form id="form">
            <h:panelGrid columns="2" width="100%">
                <rich:panelMenu style="width:200px" mode="ajax"
                    iconExpandedGroup="disc" iconCollapsedGroup="disc"
                    iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
                    iconCollapsedTopGroup="chevronDown">
                    <rich:panelMenuGroup label="Group 1">
                        <rich:panelMenuItem label="Item 1.1"
                            action="#{PanelMenu.updateCurrent}">
                            <f:param name="current" value="Item 1.1" />
                        </rich:panelMenuItem>
                    </rich:panelMenuGroup>
                </rich:panelMenu>
                <rich:panel bodyClass="rich-laguna-panel-no-header">
                    <a4j:outputPanel ajaxRendered="true">
                        <h:outputText value="||#{PanelMenu.current}|| selected"
                            id="current" />
                    </a4j:outputPanel>
                </rich:panel>
            </h:panelGrid>
        </h:form>
<!-- added end -->
        <rich:panel>
            <h:panelGroup layout="block" id="contentPanel">
                <a4j:include viewId="#{MyBacking.viewId}">
                    <f:param name="targetIdParam" value="content" />
                </a4j:include>
            </h:panelGroup>
        </rich:panel>
    </rich:page>
</f:view>

但是,如果我从此文件中删除已添加的panelMenu并将其粘贴到外部jsp页面中的tabPanel中的单独标签中,那么a4j:include d位于上面index.jsp 1}},当它被加载时,panelMenu拒绝工作(不向日志或控制台输出任何内容),而在我的选项卡集中的另一个选项卡中有rich:dataTable。使用完全相同的代码,但从第二个标签中删除了dataTable,它们都会重新开始工作。

以下是包含a4j:include的<{1}} d文件:

panelMenu

由于

1 个答案:

答案 0 :(得分:1)

当我将taglib声明重新命名为

时,这个问题就消失了
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">

而不是使用<% %>标记(无论如何都不用于facelets)

并安装了jsf-facelets-1.1.14.jar。在此之前,根本没有安装小面镜罐!