0

私は JSF 1.2 を使用しましたが、JSF 2.0 は初めてです。JSF 2.0 は ajax 機能をシームレスにサポートしている<f:ajax> ようですが、どうすればよいかはまだわかりません。これら 2 つの強力なテクノロジがうまく連携する理由を知りたいのですが。2 つのライフサイクルはどのように相互作用しますか?

PS: 私は ajax と JavaScript に精通しています。したがって、その前提に基づいて答えを出すことができます。

4

1 に答える 1

1

質問は非常に広いので、適切なタグを検索して、実際の状況での使用法を理解することをお勧めします. BalusC はここで stackoverflow に多くの貢献をしており、Xtreme Biker が参照した優れたチュートリアルも書いています。

答えがないため、JSF内でajaxがどのように機能するかについての基本的なビジョンを提供します。JSF には特別な Javascript ライブラリがあり、これを使用してサーバーへの ajax 呼び出しを実行できますjsf.ajax.request(...)。開発を容易にするために、ajax 動作をアタッチできるコンポーネントがあります。通常<f:ajax>、選択したコンポーネント ( など) にタグを使用して<h:commandButton>、それに ajax 機能を追加します。

昔はXMLHttpRequest、サーバーに get または post を介して非同期を送信し、サーバーがポストバック データを送信するまで待ちます。ポストバック データは通常、クライアント側の処理のために JSON または XML 形式で取得document.getElementById(...)され、より便利なメソッドを介してビューを更新します。最新の Javascript ライブラリによって導入されました。最終的には、これが JSF が舞台裏で行うことだと思います。

JSF 2.0 では<f:ajax>、データを部分的に送信し、サーバーで処理し、ビューを部分的に更新するのに役立つタグが導入されました。このため、ajax タグには次の最も重要な機能/属性があります<f:ajax execute="..." render="..." event="..." listener="..." onevent="..." />。それらすべてを詳しく見てみましょう。

  1. execute属性は、要素 ID のリストを指定することにより、このリクエスト中にサーバー上でどの要素を更新/処理する必要があるかを JSF に伝えます。
  2. render属性は、ajax 呼び出しが終了した後にどのコンポーネントを置き換える必要があるかを JSF に通知します。サーバーでレンダリングされた新しい要素は、部分的なページの更新後に指定された ID で古い要素を置き換えます。
  3. event属性は、ajax 呼び出しが発生するイベントを定義します。たとえば、コマンド ボタンの場合、イベントはクリック イベントである可能性があり、入力テキスト フィールドの場合、イベントはキーアップまたはぼかしイベントである可能性があります。
  4. listenerpublic void processAjaxRequest (AjaxBehaviorEvent event) { }属性は、部分的なページ更新が行われる前に、ajax 要求でトリガーされ、サーバーで実行されるタイプのマネージド Bean メソッドへのバインディングを定義します。
  5. onevent属性は、ajax リクエストのさまざまな段階で呼び出す JavaScript 関数を定義します。

Marty Hall によって書かれた ajax に関する別の優れたチュートリアルは、こちら で参照できます。

JSF 2.0 の ajax 機能の概要を説明するつもりはありませんでしたが、ajax 機能の基本を理解するための簡単な紹介を行いました。

于 2013-02-11T17:30:18.363 に答える