5

formaformgの 2 つの形式の 2 つのデータテーブルがあります。各フォームの中には、 a p:dataTablegroupsagroupsgがあります。各データテーブルには、 favaおよびfavgh:graphicImageと呼ばれるimage( ) を表示するカスタム列があります。

画像をクリックすると、他のデータテーブルの画像が更新されます。

<p:ajax event="click" listener="#{agent.toogleFavorite}"
update="fava, :formg:groupsg:favg" />

コロンがないと、例外が発生します。

javax.faces.FacesException: Cannot find component with identifier "forma:agentsa:fava" referenced from "groupsg:0:favg".

formg:groupsg:favg と :formg:groupsg:favg の違いは何ですか?

JSF2.0 と PrimeFaces 3.4 を使用しています。

4

2 に答える 2

10

:接頭辞により絶対クライアント ID が作成されるため、最も近い親ではなく、相対的に検索されUIViewRootますNamingContainer。同じ最も近い親の内部にないコンポーネントを参照する場合は、これを使用する必要がありますNamingContainer<h:form>と(<h:dataTable><p:dataTable>) はNamingContainerコンポーネントです。

ajax update/render のコンポーネントのクライアント ID を見つける方法も参照してください。詳細な説明については、 「bar」から参照される式「foo」を含むコンポーネントが見つかりません

于 2012-09-11T10:48:48.030 に答える
5

ページのルートから ID を検索する場合は、先頭にコロンを使用します。更新を呼び出しているコンポーネントが、更新されているコンポーネントの同じ NamingContainer 内にない場合に必要です。

同じ NamingContainer に対して相対的に検索したい場合は使用しないでください。これは、両方のコンポーネント (更新を呼び出すコンポーネントと更新されるコンポーネント) が同じ NamingContainer 内にある場合に実行できます。

ちなみに、「NamingContainers」は<h:form><p:dataTable><p:accordionPanel>、 などのように、ID を子コンポーネントの先頭に追加するすべてのコンポーネントです。生成された HTML を見て、親が子の ID を先頭に追加しているかどうかを確認してください。

于 2012-09-11T10:57:09.900 に答える