 |
|
前のページ 1 2
|
 |
カスタムコンバータクラスの作成
|
まず、javax.faces.convert.Converterをimplementsしてコンバータクラスを作成します。カスタムコンバータクラスを作成する際のポイントは、次のとおりです。
|
1. getAsObject()メソッド
|
画面から入力された文字列(String)をオブジェクトに変換します。本連載のサンプルの場合、画面から入力されたCSV文字列をArrayListに変換します。変換に失敗した場合は、ConverterExceptionをスローします。サンプルでは、カンマが1つもない場合は例外を投げる仕様にしてあります。
|
2. getAsString()メソッド
|
オブジェクトを画面から入力された文字列(String)に変換します。本連載のサンプルの場合、リストの要素をCSV文字列に戻します。
カスタムコンバータ(CSV2ListConverter.java)のソースをリスト1に示します。
リスト1:CSV2ListConverter.java(抜粋)

(画像をクリックすると別ウィンドウに拡大図を表示します)
|
JSF設定ファイルへの登録
|
次に、作成したコンバータをJSF設定ファイル(faces-config.xml)に登録します(リスト2)。<converter-id>要素には、<f:converter>タグのconverterId属性の値と同じものを設定します。<converter-class>要素には、コンバータのクラス名を設定します。
リスト2:faces-config.xml(抜粋)

(画像をクリックすると別ウィンドウに拡大図を表示します)
|
JSPファイルへのタグの記述
|
JSPファイル(custom_converter.jsp)にタグを記述します(リスト3)。
リスト3:custom_converter.jsp(抜粋)

(画像をクリックすると別ウィンドウに拡大図を表示します)
<f:converter>タグのconverterId属性には、リスト2に示したJSF設定ファイルのconverter-id要素の値と同じものを指定します。
|
変換後オブジェクトのマネージドBeanへの格納
|
リスト4ではCSV文字列から変換したリストを格納するマネージドBeanとしてjava.util.ArrayListを登録しています。このようにマネージドBeanとしてjava.util.ArrayListのような標準APIのクラスも指定することができます。
リスト4:faces-config.xml(抜粋)
<managed-bean>
<managed-bean-name>listBean</managed-bean-name>
<managed-bean-class>java.util.ArrayList</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
|
結果画面
|
JSPの記述をリスト5に示します。
リスト5:コンバータ結果画面JSP(抜粋)
<f:view>
<f:verbatim>ArrayList の内容をテーブルに表示<br></f:verbatim>
<h:dataTable border="1" value="#{listBean}" var="listValue" width="30%">
<h:column>
<h:outputText value="#{listValue}"/>
</h:column>
</h:dataTable>
</f:view>
#{listBean}というバインディング式でリストを参照し、リスト内の要素を<h:dateTable>コンポーネントを使用して画面に表示しています。
|
前のページ 1 2
|

|
|

|
著者プロフィール
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、 小泉守義
監修:山田祥寛
WINGSプロジェクトは、有限会社WINGSプロジェクト(代表取締役山田祥寛)が運営するライティング・チーム。海外記事の翻訳から、主にサーバサイド分野の書籍/雑誌/Web記事の執筆、講演、アプリケーション開発などを幅広く手がける。2006年7月時点での登録メンバーは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募いただきたい。
|
|
|
|