私は違いを知っていたと思いますが、今は混乱しています。:P
partialSubmit
AJAXを使用してフォームを送信するために送信ボタンでautoSubmit
使用され、独自のコンテンツのみを送信する編集可能なコンポーネントで使用されることを除いて、どちらも同じことをしているようです。私はこれを言うのが正しいですか?
私は違いを知っていたと思いますが、今は混乱しています。:P
partialSubmit
AJAXを使用してフォームを送信するために送信ボタンでautoSubmit
使用され、独自のコンテンツのみを送信する編集可能なコンポーネントで使用されることを除いて、どちらも同じことをしているようです。私はこれを言うのが正しいですか?
受け入れられた答えは、ADF に対して 100% 正しいわけではありません。partialTriggers
属性はライフサイクルに関係しています。
autoSubmit
入力コンポーネントの属性partialSubmit
とコマンド コンポーネントの属性は同じものではありません。がpartialSubmit
true に設定されている場合、partialTriggers
属性の値を持つコンポーネントのみがライフサイクルを通じて処理されます。このautoSubmit
属性は、入力コンポーネントと選択コンポーネントによって使用され、値が変更されるたびにフォームを自動的に送信するようにフレームワークに指示します。ただし、フォームが送信され、autoSubmit
属性が true に設定されている場合、valueChangeEvent イベントが呼び出され、そのイベントのルート コンポーネントとしてマークされたコンポーネントとその子に対してのみライフサイクルが実行されます。詳細は、第4.4項「最適化されたライフサイクルの使用」を参照してください。
どちらも、カスタム JSF コンポーネントのカスタム プロパティから発生する AJAX 対応の呼び出しです。autoSubmit
クライアント側のコンポーネント内のコンテンツでサーバー側マネージド Bean の値を最新に保つために、基本的にコンポーネントに固有のコンテンツを非同期的にポストバックします。
ApartialSubmit
は別の非同期 AJAX 呼び出しで、ICEFaces の inputText コンポーネントでフォーカスを失うなど、ある種のコンポーネント イベントでコンポーネント値を即座にポストバックします。
注目すべき興味深い点は、非同期送信の各タイプで ViewState 全体がポストバックされることです。そのため、送信前にページで他のコンポーネントの値が変更された場合、バインドされたサーバー側マネージド Bean プロパティの値も更新されます。 、発生した可能性のあるサーバー側のデータ変更を反映するために、クライアント側のコンポーネントが更新されない場合があります。
実際、JSF サーバー側のライフサイクル全体が各ポストバックで発生します。各非同期送信操作が発生した後に発生しているフェーズを確認できるデバッグ PhaseListener の実装に関する次の記事をお読みください。