ホーム>ネットワークプログラミングチュートリアル>JSP チュートリアル

JSP と JSF をマージして完璧な Web アプリケーションを作成します

著者:Eve Cole 更新時間:2009-07-03 16:55:55

プログラムの最初の 2 行で、JSF コア ライブラリと HTML ライブラリがインポートされますこれについては以前に説明したので、ここでは詳しく説明しません。

JSF タグがバックエンドとどのように対話するかを見てみましょう。 JSP で JSF を使用しているため、この JSP と通常の JSP の間に違いはありません。JSP が初めて実行されるとき、JSP コンパイラーは .JSP ファイルをサーブレットにコンパイルし、それを呼び出します。次に、サーブレットはクライアントからデータ ストリームを受信します。ただし、通常の JSP プログラムとは異なり、JSF タグは JSF API によって呼び出されます (これにより、ロジック層とプレゼンテーション層を分離できます)。それ以外は、通常の JSP タグと変わりません。

UIComponent タグが doStartTag メソッドを受け取ると、JSF はこれらのプロパティを使用してタグの値を設定します。たとえば、この例の inputText タグは、その属性値に従って設定されます。以下は JSF のコード スニペットです。

<h:inputText id="温度" value="#{tc.fahrenheitTemp}">

<f:validateDoublerange minimum="-100.0" minimum="100.0"/>

<f:valuechangeListener type="tempconv.page.TCChangedListener" />

inputText タグは、対応する値に従って id 属性と value 属性を設定します。 JSF では、各属性値は setAttribute(String name, Object value) によって設定されます。ただし、JSF タグは対応するデフォルト値を指定できることに注意する必要があります。これは、Java のシステム プロパティに似ています。プロパティ名を指定すると、そのプロパティが存在しない場合、システムはそのプロパティの値を返します。

次に、上記のプログラムの最も重要な部分である UIInput コンポーネントのイベント処理を見てみましょう。

JSF では、イベント処理は valuechangeListener タグによって完了します。このラベルで表されるイベントは、テキスト ボックスの値が変更されたときにイベントをトリガーします。しかし、興味深いのは、このイベントはすぐには送信されず、ユーザーが [送信] ボタンをクリックするまでイベントと対応するデータがバックエンドに送信されないことです。したがって、このイベントリクエストはプリコミットとも呼ばれます。最後に、UICommand のコード実装を見てみましょう。

上記のコードは、convert() メソッドと UICommand を接続します。つまり、 「送信」ボタンをクリックすると、convert() メソッドが実行されます。 view タグに遭遇すると、JSF プログラムが実行され、JSFAPI は最後に doEnd メソッドを呼び出して JSF プログラムを終了します。このプログラムを解析した後、JSF エンジンは対応する JSF タグを HTML コンポーネントに変換します。

最後に、JSP が JSF イベントにどのように応答するかを見てみましょう。以下は、JSF イベントに応答する Java コードの一部です。

public class TCChangedListenerimplements ValueChangeListener

{

public TCChangedListener()

{

super();

}

// イベント処理

public void processValueChange(ValueChangeEventevent)

throws AbortProcessingException

{

UIComponent comp =event.getComponent()

;

if ( null != value)

{

float curVal = ((Number) value).floatValue();

マップ値 = comp.getAttributes();

if (curVal < 0)

{

values.put("styleClass", "red") ;

}

else

{

values.put("styleClass", "black");

}

}

}

JSF イベントに応答するには、JSF ライブラリに ValueChangeListener インターフェイスを実装する必要があります。上記プログラムで注目すべき点は、最終的に入力値に応じて対応する色が設定されることです。これらの値は JSP に依存しません。もちろん、これらを null に設定して、JSP タグに色を設定させることもできます。