1

嗨,我需要在 tab1 内创建一个带有数据表的手风琴面板,但我收到以下错误:: javax.Servlet.ServletException:cannot find component with identifier ":form:display",谁能帮我解决这个问题使用 primefaces 时出错。我需要在不使用小部件的情况下工作。

视图.xhtml

<h:form prependId="false" id="form">  

<p:dataTable id="dataTable" var="car" value="#{tableBean.getList()}"  
             paginator="true" rows="10"  selectionMode="single" selection="#{tableBean.selectedCar}" rowKey="#{car.model}" 
             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
             rowsPerPageTemplate="5,10,15">  
    <f:facet name="header">  
        Posted Jobs  
    </f:facet>  

    <p:column>  
        <f:facet name="header">  
            <h:outputText value="Model" />  
        </f:facet>  
        <h:outputText value="#{car.model}" />  
    </p:column>  

    <p:column>  
        <f:facet name="header">  
            <h:outputText value="Year" />  
        </f:facet>  
        <h:outputText value="#{car.year}" />  
    </p:column>  

    <p:column>  
        <f:facet name="header">  
            <h:outputText value="Manufacturer" />  
        </f:facet>  
        <h:outputText value="#{car.manufacturer}" />  
    </p:column>  

    <p:column>  
        <f:facet name="header">  
            <h:outputText value="Color" />  
        </f:facet>  
        <h:outputText value="#{car.color}" />  
    </p:column>  
      <f:facet name="footer">  
        <p:commandButton id="viewButton" value="View" icon="ui-icon-search"  
               update=":form:display" oncomplete="carDialog.show()"    actionListener="#{tableBean.add}"
                />  
    </f:facet>

</p:dataTable>  
 <p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false"  
          width="200" showEffect="clip" hideEffect="fold">  

    <h:panelGrid id="display" columns="2" cellpadding="4">  



        <h:outputText value="Model:" />  
        <h:outputText value="#{tableBean.selectedCar.model}" />  

        <h:outputText value="Year:" />  
        <h:outputText value="#{tableBean.selectedCar.year}" />  

        <h:outputText value="Manufacturer:" />  
        <h:outputText value="#{tableBean.selectedCar.manufacturer}" />  

        <h:outputText value="Color:" />  
        <h:outputText value="#{tableBean.selectedCar.color}" />  
    </h:panelGrid>  
</p:dialog>  

  </h:form>  

AccordionPanel.xhtml

<h:head>
    <title>Accordion Panel</title>
</h:head>
<h:body>

    <h:form>
        <p:accordionPanel>
<p:tab id="DataTable1" title="DataTable 1">
<ui:include src="view.xhtml" />
  </p:tab>
  <p:tab id="DataTable2" title="DataTable2">
</p:tab>
</p:accordionPanel>
    </h:form>

</h:body>
</html>
4

2 回答 2

3

您收到此错误是因为无法使用呈现的 html 上的指定组件引用找到 commandButton 的更新目标。

<p:commandButton id="viewButton" value="View" icon="ui-icon-search"
 update=":form:display" oncomplete="carDialog.show()" actionListener="#tableBean.add}"/>  

尝试删除update=":form:display"以便您的页面可以呈现,使用 Firebug 检查生成的显示 panelGrid 的组件 ID,并在更新目标中使用该 ID。

由于 primefaces 3.1 版组件引用与 JSF 规范保持一致。有关详细信息,请参阅此链接UI 组件 findComponent()

于 2013-02-28T09:06:22.337 回答
1

将 commandButton 上的 (update=":form:display") 属性更新为:

更新=“:表单:对话框:显示”

于 2013-02-28T12:54:46.700 回答