5

私は違いを知っていたと思いますが、今は混乱しています。:P

partialSubmitAJAXを使用してフォームを送信するために送信ボタンでautoSubmit使用され、独自のコンテンツのみを送信する編集可能なコンポーネントで使用されることを除いて、どちらも同じことをしているようです。私はこれを言うのが正しいですか?

4

2 に答える 2

9

受け入れられた答えは、ADF に対して 100% 正しいわけではありません。partialTriggers属性はライフサイクルに関係しています。

部分ページ レンダリングを宣言的に有効にすることから

autoSubmit入力コンポーネントの属性partialSubmit とコマンド コンポーネントの属性は同じものではありません。が partialSubmittrue に設定されている場合、partialTriggers属性の値を持つコンポーネントのみがライフサイクルを通じて処理されます。このautoSubmit属性は、入力コンポーネントと選択コンポーネントによって使用され、値が変更されるたびにフォームを自動的に送信するようにフレームワークに指示します。ただし、フォームが送信され、 autoSubmit属性が true に設定されている場合、valueChangeEvent イベントが呼び出され、そのイベントのルート コンポーネントとしてマークされたコンポーネントとその子に対してのみライフサイクルが実行されます。詳細は、第4.4項「最適化されたライフサイクルの使用」を参照してください。

于 2011-09-08T14:31:36.890 に答える
3

どちらも、カスタム JSF コンポーネントのカスタム プロパティから発生する AJAX 対応の呼び出しです。autoSubmitクライアント側のコンポーネント内のコンテンツでサーバー側マネージド Bean の値を最新に保つために、基本的にコンポーネントに固有のコンテンツを非同期的にポストバックします。

ApartialSubmitは別の非同期 AJAX 呼び出しで、ICEFaces の inputText コンポーネントでフォーカスを失うなど、ある種のコンポーネント イベントでコンポーネント値を即座にポストバックします。

注目すべき興味深い点は、非同期送信の各タイプで ViewState 全体がポストバックされることです。そのため、送信前にページで他のコンポーネントの値が変更された場合、バインドされたサーバー側マネージド Bean プロパティの値も更新されます。 、発生した可能性のあるサーバー側のデータ変更を反映するために、クライアント側のコンポーネントが更新されない場合があります。

実際、JSF サーバー側のライフサイクル全体が各ポストバックで発生します。各非同期送信操作が発生した後に発生しているフェーズを確認できるデバッグ PhaseListener の実装に関する次の記事をお読みください。

http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

于 2011-09-02T11:33:59.797 に答える