|
||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||
| UIコンポーネントクラスを作成 | ||||||||||
|
次に、UIコンポーネントクラスを作成します。UIコンポーネントクラスの作成手順は次のとおりです。
表3:UIコンポーネントクラスの作成手順
コンポーネントクラスを作成する際のポイントは、次のとおりです。 |
||||||||||
| 1. コンポーネントクラスの種類に対応したクラスを拡張してクラスを作成する | ||||||||||
|
日付入力コンポーネントでは、画面からの入力値があるのでjavax.faces.component.UIInputクラスを継承しています。入力のない表示だけのカスタムコンポーネントなどはUIComponentクラス、UIComponentBaseクラスなどを継承して作成できます。コンポーネントクラスのクラス図を図2に示します。 |
||||||||||
| 2. getFamily()メソッドを実装する | ||||||||||
|
JSF設定ファイルに設定したファミリタイプ名と同じ文字列を返します。JSFでは、複数のコンポーネントを集めてグルーピングして扱うことができます。このグループのことをファミリといいます。 |
||||||||||
| 3. saveState()メソッド、restoreState()メソッドをオーバーライドする | ||||||||||
|
UIコンポーネントは、シリアライズにより、その状態が保存(save)、または復元(restore)されます。その際にコンポーネントといっしょに保存/復元する必要のある属性は、saveState()メソッド、restoreState()メソッドをオーバーライドし、シリアライズのための処理を実装します。親クラスで定義された属性は、親クラスで保存/復元されますので、あえて実装する必要はありません。 |
||||||||||
| 4. getConvertedValue()メソッドをオーバーライドする | ||||||||||
|
getConvertedValue()メソッドをオーバーライドする入力値の変換に通常のコンバータが使用できない場合は、このメソッドをオーバーライドし変換処理を実装します。変換エラーがある場合は、次のように実装します。
表4:変換処理の実装手順 上記の処理により、JSFがエラーを検知し、Render Responseフェーズに移行します。日付入力コンポーネントの場合、テキストの入力フィールドが3つあり、通常のコンバータは使用できませんので、変換処理を自ら実装しています。 リスト2では、submittedValueに保存されたマップに格納されている「年」「月」「日」の文字列を基にCalendarオブジェクトを生成しています。 リスト2:UIInputDate.java(抜粋) java.util.Map型のsubmittedValueは、レンダラのdecode()メソッドからsetSubmittedValue()メソッドを通して、UIコンポーネントに渡されたオブジェクトです。Calendarオブジェクトの生成に失敗した場合は、変換エラーとしてFacesMessageのインスタンスを生成し、addMessage()メソッドによりFacesContextに追加しています。これにより、JSFが |
||||||||||
|
前のページ 1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||



