从这个先前提出的问题中,我已经注意到,当我将一个rich:panelMenu(在index.jsp页面中正常工作)移入another.jsp然后index.jsp使用a4j:include标记将其包括在内时,该rich:panelMenu功能将停止工作。
这是一个错误吗?
编辑1
响应代码并经过一些隔离测试后,问题似乎出在panelMenu的rich:dataTable另一个选项卡中的一个rich:tabPanel共存。
如果myindex.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从此文件中删除添加的内容,然后将其粘贴到tabPanel外部jsp页面中单独的选项卡中,则该页面a4j:include在上面的d中被index.jsp加载,加载时,panelMenu拒绝运行时(在日志或控制台中不输出任何内容)我的标签集中的另一个标签有一个rich:dataTable。使用完全相同的代码,但是dataTable从第二个选项卡中删除了代码,它们又重新开始工作。
这是a4j:include带有的损坏的d文件panelMenu:
<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>
谢谢
当我将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。到目前为止,根本没有安装任何facelets jar!
jsf-facelets-1.1.14.jar