「update」、「@all」、「@form」に関する多くの質問を見ましたが、私のアプリケーションでは誰も状況を解決しませんでした。
次のように、threadList というカスタム JSF タグを取得しました。
<h:form>
<h:panelGroup>
<p:commandButton action="#{Bean.action(catId, id)}" icon="ui-icon-weblibrary ui-icon-weblibrary-like" title="Start" update="@form" value="#{Bean.threadName}" />
</h:panelGroup>
</h:form>
このカスタム タグは、次のような別のカスタム タグによって挿入されます。
<ui:repeat value="#{Bean.threadList}" var="thread">
<ui:include src="threadList.xhtml">
<ui:param name="catId" value="..." />
<ui:param name="id" value="..." />
</ui:include>
</ui:repeat>
これは、2 番目の taglib および ajax による更新の結果である場合があります。
そして、これが問題です...
- p:commandButton に update="@form" を設定すると、すべて正常に動作しますが、ログに「識別子 "j_idt70:0:j_idt82" を持つコンポーネントがビューに見つかりません」と表示されます。
- update=":@form" または update=":form" を設定すると、「識別子 "j_idt70:0:j_idt82" を持つコンポーネントがビューに見つかりません。」消えますが、イベントは何も更新しません (アクションが正常に実行された場合でも)。
- 最後に、form と panelGroup に ID を指定して update=":formId:panelId" または update=":@formId:panelId" または update=":formId" を試行すると、「識別子 "j_idt70:0: のコンポーネントが見つかりません: j_idt82" が表示されます。" が表示され、何も更新されません。
興味深いのは、ブラウザのソース コードに何もないことです。したがって、この「ゴースト」j_idt70 がすべての ID と更新コマンドを破損しているかどうかはわかりません。
これについて再度質問する前に、スタック オーバーフローの古い質問で学んだことをすべて試しました。
読んでくれてありがとう。