TOPシステム開発> カスタムコンバータクラスの作成
まるごとサーバサイドJava
JDeveloperで学ぶJSF入門

第14回:カスタムコンバータの作成

著者:WINGSプロジェクト  佐藤治夫(株式会社ビープラウド)、
小泉守義

監修:山田祥寛   2006/9/6
前のページ  1  2
カスタムコンバータクラスの作成

   まず、javax.faces.convert.Converterをimplementsしてコンバータクラスを作成します。カスタムコンバータクラスを作成する際のポイントは、次のとおりです。

1. getAsObject()メソッド

   画面から入力された文字列(String)をオブジェクトに変換します。本連載のサンプルの場合、画面から入力されたCSV文字列をArrayListに変換します。変換に失敗した場合は、ConverterExceptionをスローします。サンプルでは、カンマが1つもない場合は例外を投げる仕様にしてあります。


2. getAsString()メソッド

   オブジェクトを画面から入力された文字列(String)に変換します。本連載のサンプルの場合、リストの要素をCSV文字列に戻します。

   カスタムコンバータ(CSV2ListConverter.java)のソースをリスト1に示します。

リスト1:CSV2ListConverter.java(抜粋)
CSV2ListConverter.java(抜粋)
(画像をクリックすると別ウィンドウに拡大図を表示します)


JSF設定ファイルへの登録

   次に、作成したコンバータをJSF設定ファイル(faces-config.xml)に登録します(リスト2)。<converter-id>要素には、<f:converter>タグのconverterId属性の値と同じものを設定します。<converter-class>要素には、コンバータのクラス名を設定します。

リスト2:faces-config.xml(抜粋)
faces-config.xml(抜粋)
(画像をクリックすると別ウィンドウに拡大図を表示します)


JSPファイルへのタグの記述

   JSPファイル(custom_converter.jsp)にタグを記述します(リスト3)。

リスト3:custom_converter.jsp(抜粋)
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プロジェクトは、有限会社WINGSプロジェクト(代表取締役山田祥寛)が運営するライティング・チーム。海外記事の翻訳から、主にサーバサイド分野の書籍/雑誌/Web記事の執筆、講演、アプリケーション開発などを幅広く手がける。2006年7月時点での登録メンバーは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募いただきたい。


INDEX
第14回:カスタムコンバータの作成
  カスタムコンバータの作成方法
カスタムコンバータクラスの作成