JViews JSF コンポーネントと ICEfaces コンポーネント間の相互運用性

JViews JSF コンポーネントと ICEfaces コンポーネントは、両方とも JSF コンポーネントです。 これらのコンポーネントは、クライアント側とサーバー側の両方で連携することができます。
クライアント側では、JViews JSF コンポーネントは、上位の Ajax 対応 JavaScript™ ライブラリーによって実装されます。 JViews コンポーネントの振る舞いを指示するには、これらのコンポーネントの JavaScript メソッドを呼び出します。 例えば、ICEfaces のボタンをクリックしたとき、JViews ビューのコンテンツを更新するには、そのビューの JavaScript メソッド (updateImage()) を呼び出します。
サーバー側では、JViews コンポーネントと ICEfaces コンポーネントの両方を Managed Bean にバインドすることができます。 これにより、JViews JSF コンポーネントの Managed Bean と ICEfaces コンポーネントの Managed Bean との間でパラメーターおよびデータを交換することができます。
多数のノードとリンクを示すダイアグラム・ビューがあるとします。 特定のノードを表示し、ICEfaces のボタンをクリックしたときにそのノードを画面の中央に置きたいとします。 このユース・ケースは、diagrammer.jsp にあるコード・サンプル <install-dir> /jviews-diagrammer89/codefragments/jsf-diagrammer-ice に示されています。 このサンプルを今すぐ実行して、状況をよりよく理解してください。
ボタンをクリックすると、クライアント側でアクションが開始されます。 しかし、選択されたノードに関する情報が十分でないため、クライアント側でタスクを完全に実行することはできません。 したがって、要求をサーバーに実行依頼し、さらに計算を実行するようサーバーに求める必要があります。
サーバー側の Managed Bean が選択されたノードを画面の中央に置くために適用するオフセットを計算した場合は、そのオフセットを適用するようにクライアント側の JViews コンポーネントに指示する方法を見つける必要があります。 この目的のために、ICEfaces は JavaScript コードをサーバーからクライアントに送る方法を提供します。 コードは次のとおりです。
com.icesoft.faces.context.effects.JavascriptContext
   .addJavascriptCall(FacesContext.getCurrentInstance(),
   "diagrammer.moveTo(300, 500);");
クライアントにある ICEfaces Ajax エージェントは、予期された位置にダイアグラムをスクロールするために、受け取った JavaScript コードを評価します。
詳しくは、同じサンプル内の DiagrammerBean.java ファイルを参照してください。