0

「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 と更新コマンドを破損しているかどうかはわかりません。

これについて再度質問する前に、スタック オーバーフローの古い質問で学んだことをすべて試しました。

読んでくれてありがとう。

4

1 に答える 1

2

これまでに示したコードは、Mojarra 2.1.9 と PrimeFaces 3.3 で問題なく動作します。

同様に最新バージョンにアップグレードすると、問題が解決する可能性が高くなります。

于 2012-06-19T12:32:52.283 に答える