【发布时间】:2010-02-25 16:07:35
【问题描述】:
从this previously asked question,我注意到当我将rich:panelMenu(在index.jsp 页面中工作正常)移动到another.jsp,然后使用a4j:include 标签将其包含在index.jsp 中时, rich:panelMenu 功能停止工作。
这是一个错误吗?
编辑 1
响应代码并经过一些隔离测试,问题似乎源于 panelMenu 中 rich:tabPanel 的另一个选项卡中的 rich:dataTable 共存。
如果我的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 中的单独选项卡中,然后在上面的index.jsp 中为a4j:included,当它被加载时, panelMenu 拒绝工作(不向日志或控制台输出任何内容),而在我的选项卡集中的另一个选项卡中有一个 rich:dataTable。使用完全相同的代码,但从第二个选项卡中删除了dataTable,一切都将重新开始工作。
这是带有panelMenu 的损坏的a4j:included 文件:
<h:panelGrid columns="1" border="0" style="width: 100%">
<rich:tabPanel switchType="client" rendered="true">
<rich:tab styleClass="tab" label="Node Logs">
<h:panelGrid columns="2" border="0">
<h:graphicImage value="/btn50.png" width="30" height="30"
alt="Logs" />
<h:outputText value="log: #{MyBacking.chosenNode}"
styleClass="pageTitle" />
</h:panelGrid>
<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>
</rich:tab>
<rich:tab styleClass="tab" label="Docs">
<rich:dataTable value="#{MyBacking.MyData}">
<rich:column style="text-align:center" width="150px">
</rich:column>
</rich:dataTable>
</rich:tab>
</rich:tabPanel>
</h:panelGrid>
谢谢
【问题讨论】:
-
很可能不是错误。给我们更多代码,并检查您的 JavaScript 控制台了解详情。
-
@Bozho,查看添加的代码和诊断。