0

「"contentForm:tabView:form:addressBookTable" から参照される識別子 "contentForm:tabView:form:addressDialogPanel" を持つコンポーネントが見つかりません」というエラーが表示されます。ウィジェット内で panelGrid を更新するにはどうすればよいですか?

<h:form id="form">

<p:dataTable id="addressBookTable">
 <p:ajax event="rowSelect" listener="#{addressBookController.onRowSelect}"   
                update="contentForm:tabView:form:addressDialogPanel" oncomplete="addressDialog.show()" />
</p:dataTable>

<p:dialog id="addressDialogId" widgetVar="addressDialog">
  <h:panelGrid id="addressDialogPanel" columns="2" cellpadding="4">
  </h:panelGrid>
</p:dialog>

</h:form>
4

1 に答える 1

0

主な問題は、コンポーネントの間違ったクライアント ID を指定していることです。また、 p:tabViewはコンポーネントであり、フォームではありません。を定義するh:formと、標準の HTML フォーム要素が生成されます。ページを送信すると、JSF は POST を使用してデータをバッキング Bean に送信します。したがって、それらをネストすると、予期しない多くの問題が発生します。フォームを sideForm や searchForm などのセクションに分ける必要があります。

コンポーネントを更新しようとすると、コンポーネントの正しいクライアント ID を検出する必要があります。これは、ブラウザの開発者設定で行うことができます (chrome の場合は f12 を押します)。次に、拡大鏡ボタンでコンポーネントを選択し、その ID をupdateプロパティに渡します。ここのように:

ここに画像の説明を入力

たとえば、ここからJSFの基本を学ぶために読む必要があります

于 2013-05-02T11:39:18.433 に答える