2

a4j:poll一定の時間間隔の後にデータテーブルをリロードする ajax にコンポーネントを使用しようとしています。正常に動作していますが、テーブルが自動的にリロードされ、最後の列でツール (行の編集/削除) を使用すると、データテーブル (すべての行) が消え、手動で ( h:commandButton.. を使用して)ロードする必要があります。

ここに私のコードの一部があります:

<h:form>
  <a4j:poll id="poll" interval="30000" action="#{bean.load}" enabled="#{bean.pollEnabled}" render="list" />
</h:form>

<h:form id="list" ...>
 <rich:dataTable id="table" var="item" value="#{bean.model}">
 ...

同じロード メソッドを呼び出しているボタン:

  <h:commandButton id="btn" action="#{bean.load}" ... /> 

ボタンを使用して再読み込みすると、最後の列のツールを使用できます。なぜかわからないのですか?

ここに画像の説明を入力

アップデート:

  • 最初のケース ( a4j:poll) では、編集/削除を使用するときに、Bean のコンストラクターが呼び出されるようです........
  • 豆は@ViewScoped
4

1 に答える 1

2

最初のケース(a4j:poll)では、編集/削除を使用すると、Beanのコンストラクターが呼び出されるようです

私は RichFaces を行っていませんが、この問題は何らかの形でJSF issue 790に関連していると思います。これにより、別のフォームによって開始された ajax リクエスト中に他のフォームのビューステートが失われます (実際には、バッキング Bean の再構築も引き起こします)他のフォームに関連付けられています)。これは、 commandButton/commandLink/ajax アクション/listener メソッドが呼び出されないか、入力値が更新されないのポイント 7 にも記載されています。

特定のケースでは<a4j:poll>、テーブルと同じ形式で配置すると問題が解決するはずです。なぜそれが最初に別のフォームに配置されたのかはわかりませんが、それは不要なようです.

于 2012-08-24T11:47:50.853 に答える