从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
由于
答案 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
。在此之前,根本没有安装小面镜罐!