ソース・アシスタントによる JSF コンポーネント・ツリーへのアクセス

EGL コードを使用して、JavaServer Faces (JSF) コントロールによって認識される Java™ 関数を呼び出すことができます。こうすることにより、これらのコントロールの外観および振る舞いを JSF ハンドラーから変更できます。 次の例には、JSF コントロールにアクセスするための EGL コードが含まれています。
package jsfhandlers;

import com.ibm.egl.jsf.*;

handler myPage type JSFHandler
   {view = "myPage.jsp",
    viewRootVar = myViewRoot}

    myViewRoot UIViewRoot;
    myInputVar string = "Hello";

  function changeColor()
    myInputField HtmlInputText;
    myInputField = myViewRoot.findComponent("form1:text1");
    myInputField.setStyle("color : red");
  end

end
この例では、myInputVar 変数にバインドされた text1 という名前の入力コントロールが JSP 上にあること、および changeColor 関数にバインドされたコマンド・ボタンが JSP 上にあることが前提となっています。
JSF ハンドラーから JSF コントロールにアクセスするには、以下のステップを実行します。
  1. ご使用の EGL Web プロジェクトに、JSF コンポーネント・インターフェースのサポートがあることを確認する。EGL Web プロジェクトへの JSF コンポーネント・インターフェース・サポートの追加を参照してください。
  2. Web ページを作成し、1 つ以上の JSF コントロールをそれに追加する。
  3. (オプション) 識別がしやすいように、JSF コントロールの ID 属性を変更する。ID 属性を変更するには、コントロールを選択し、「プロパティー」ビューの「ID」フィールドに、分かりやすいニーモニック (ページ内で固有のもの) を入力してください。
  4. ページの JSF ハンドラーに、次のコードを追加する。JSF コンポーネント・インターフェースのサポートをプロジェクトに追加した後に Faces JSP ファイルを作成すると、このコードが JSF ハンドラーのファイルに自動的に追加されます。
    • 以下の import 文を追加する。
      import com.ibm.egl.jsf.*

      この文でインポートされるパッケージには、JSF コントロール内の Java コードにアクセスするための、ExternalType パーツ・グループが含まれています。これらのパーツを編集する必要はありません。

    • ページの JSF ハンドラー内で、次の例のように UIViewRoot 型の変数を宣言する。
      myViewRoot UIViewRoot;
    • JSF ハンドラー・プロパティー viewRootVar で、UIViewRoot 変数の名前を指定する。
      handler myPage type JSFHandler
         {view = "myPage.jsp",
          viewRootVar = myViewRoot}
  5. JSF ハンドラーの関数内のブランク行で、Ctrl+Shift+Z を押す。ページ上の JSF コントロールを表示する「EGL ソース・アシスタント」ウィンドウが開きます。
  6. 「EGL ソース・アシスタント」ウィンドウで、アクセスしたい JSF コントロールを選択する。 ID またはコントロール・タイプを使用して、必要なコントロールを見つけることができます。あるいは、コントロールの上にマウスを移動してそのコントロールの属性を調べることができます。
  7. 「OK」をクリックします。
    EGL ソース・アシスタントが、2 行の EGL コードを JSF ハンドラーに追加します。
    • コードの第 1 行では、選択した JSF コントロールに一致する ExternalType パーツの EGL 変数が定義されます。 上の例の場合には、次のコードを使用して、HtmlInputText 型の変数を定義し、JSF 入力テキスト・コントロールにアクセスしています。
      myInputField HtmlInputText;
    • コードの第 2 行では、その変数が JSF コントロールに関連付けられます。 上の例の場合には、次のコードによって、form1 という書式内にある text1 という JSF 入力テキスト・コントロールに、変数が関連付けられています。
      myInputField = myViewRoot.findComponent("form1:text1");
  8. その変数を使用して JSF コントロールを変更する。 例えば、次のコードでは、setStyle 関数を使用して入力コントロールのテキストの色が赤に変更されます。
    myInputField.setStyle("color : red");
    このコードが実行されると、 入力コントロールのスタイルが変更されます。この例では、 ブラウザーに表示される HTML コードは次のようになります。
    <input id="form1:text1" type="text" name="form1:text1" style="color : red" />

    このセクションの関連トピックでは、このような方法で JSF コントロールで実行できる操作の例を、いくつか紹介しています。特定のコントロールで呼び出せる操作の完全なリストを見るためには、com.ibm.egl.jsf パッケージ内にある ExternalType パーツの関数を参照してください。

以下に、EGL コードで JSF コントロールにアクセスする場合の注意事項を示します。

JSF コントロールには、さまざまな変更を加えることができます。『関連タスク』にいくつかの例があるので、 参考にしてください。


フィードバック