26
 <ui:define name="content">
    <f:view>                        
    <h:form id="myForm" styleClass="form" >

        <p:dataTable var="provider" id="ss"  value="#{providerSelectBean.providerList}" rowKey="#{provider.license}"  

            selection="#{providerSelectBean.selectedProvider}" selectionMode="single"> 

            <p:ajax listener="#{providerSelectBean.onRowSelect}"    
                            update=":myForm:output"event="rowSelect"/>  

            <p:column sortBy="#{provider.license}" width="110" >
                <f:facet name="header">
                    <h:outputText value="License#" />
                </f:facet>
                <h:outputText value="#{provider.license}" />
            </p:column>

            <p:column sortBy="#{provider.prgName}" width="110" >
                <f:facet name="header">
                    <h:outputText value="Program Name" />
                </f:facet>
                <h:outputText value="#{provider.prgName}" />
            </p:column>

        </p:dataTable><br/>

        <p:panelGrid id="output" >
            <h:outputText value="License" />
            <h:outputText value="#{provider.license}" /> 
        </p:panelGrid>

    </h:form>           
    </f:view>

</ui:define>    

これはJSF2.0とprimefaces3.4.1での私の最初のスティントであり<p:ajax update、エラーが発生します

javax.faces.FacesException: Cannot find component with identifier  
":myForm:output"  referenced from "myForm:ss"
4

2 に答える 2

29

生成された HTML コードを調べて、panelGrid 用に生成されている実際の ID を確認し、その ID を更新してみてください。たまたま動的な場合は、いつでも JQuery CSS セレクターを使用できます (かなり頻繁に使用しています)。あなたの場合、次のように行くことができます:

update="@([id$=output])"

この式は、id が output で終わるすべてのコンポーネントを表します。詳細については、JQuery ドキュメントを参照してください。

于 2012-11-21T18:41:42.837 に答える
25

:#{p:component(componentId)}のように使用することもできます

<p:ajax listener="#{providerSelectBean.onRowSelect}"  
update=":#{p:component('output')}" event="rowSelect"/>

レンダー/更新属性のテンプレートで親ネーミングコンテナーの ID を取得するに対する BalusC の回答を引用します。

p:component は、指定された ID を持つコンポーネントのビュー ルート全体をスキャンし、そのクライアント ID を返すヘルパー関数です。

于 2013-02-04T15:00:23.743 に答える