1

こんにちは、tab1 内にデータテーブルを持つアコーディオン パネルを作成する必要がありますが、次のエラーが表示されます:: javax.Servlet.ServletException: 識別子 ":form:display" を持つコンポーネントが見つかりません。ウィジェットを使用せずに動作する必要があります。

view.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"。表示 panelGrid の生成されたコンポーネント ID を Firebug で確認し、その ID を更新ターゲットで使用してください。

Primefaces バージョン 3.1 のコンポーネント参照は JSF 仕様に準拠しているためです。詳細については、このリンクを参照してくださいUI コンポーネント findComponent()

于 2013-02-28T09:06:22.337 に答える
1

commandButton の (update=":form:display") 属性を次のように更新します。

update=":form:dialog:display"

于 2013-02-28T12:54:46.700 に答える