JSF Converter入門 - カスタムConverterの実装
2009/06/23 21:22Update
JSFでは、標準Converterのほか、カスタムConverterも実装できます。本文はカスタムConverterの実装方法や手順について解説します。
JSFでは、コンバータ(converter)という ユーザ入力/出力 値に対してコンバート(変換)を行うための仕組みを提供しています。
JSF Converterの基本について、次の記事をご参照ください。
JSF Converter入門 - 標準Converter及びその使い方
1)カスタムConverterコンポーネント・クラス
2)faces-config.xmlに登録
3)カスタムConverterタグ・クラス
4)TLDファイル記述
5)カスタムConverterタグの使用
以下のサンプルは、次の機能のConverterを実装しています。
1、ユーザ入力:半角カンマ(,)区切りでユーザ入力をList型に変換します。
例:"12,345,67,abc" という入力をList[0]=12,List[1]=345,List[2]=67,List[3]=abs に変換します。
2、出力(画面表示):List<String>型の値を半角カンマ(,)区切りでString形式に表示します。
例:List[0]=12,List[1]=345,List[2]=67,List[3]=abs型のListを"12,345,67,abc"のように表示させます。
では、実装手順を見てみます。
javax.faces.Converter.Converterインタフェースを実装したクラスを定義します。
例:
String2ListConverter.java
※変換エラーがあった場合、getAsObject/getAsStringメソッドでConverterExceptionを投げ出せば、JSFフレームワークはその異常をキャッチし、画面上で表示します。
JSF Converterの基本について、次の記事をご参照ください。
JSF Converter入門 - 標準Converter及びその使い方
カスタムConverter実装手順
1)カスタムConverterコンポーネント・クラス
2)faces-config.xmlに登録
3)カスタムConverterタグ・クラス
4)TLDファイル記述
5)カスタムConverterタグの使用
以下のサンプルは、次の機能のConverterを実装しています。
1、ユーザ入力:半角カンマ(,)区切りでユーザ入力をList型に変換します。
例:"12,345,67,abc" という入力をList[0]=12,List[1]=345,List[2]=67,List[3]=abs に変換します。
2、出力(画面表示):List<String>型の値を半角カンマ(,)区切りでString形式に表示します。
例:List[0]=12,List[1]=345,List[2]=67,List[3]=abs型のListを"12,345,67,abc"のように表示させます。
では、実装手順を見てみます。
1)カスタムConverterコンポーネント・クラス
javax.faces.Converter.Converterインタフェースを実装したクラスを定義します。
例:
String2ListConverter.java
package mypackage;
import java.util.ArrayList;
import java.util.List;
import javax.faces.convert.Converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
public class String2ListConverter implements Converter{
//Converter ID
public static final String CONVERTER_ID = "String2List";
//String型⇒Object型
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value == null || value.equals("")){
return value;
}
String [] items = value.split(",");
List retList = new ArrayList();
for (String item : items) {
if (!"".equals(item)) {
retList.add(item);
}
}
return retList;
}
//Object型⇒String型
public String getAsString(FacesContext context, UIComponent component, Object value) {
assert value instanceof List;
String ret = "";
List <String>valueList = (List)value;
for (int i=0; i<valueList.size(); i++) {
String item = (String)valueList.get(i);
ret += item;
if (i != valueList.size()-1) {
ret += ",";
}
}
return ret;
}
// parameters here
private String param1;
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam1() {
return param1;
}
//...
}
※変換エラーがあった場合、getAsObject/getAsStringメソッドでConverterExceptionを投げ出せば、JSFフレームワークはその異常をキャッチし、画面上で表示します。
Sponsored Link
- Relative Articles
- JSFプロジェクト階層構造例 - (2009/06/20 16:39)
- JSFのインストール - 初めてのJSFアプリ作成・実行 - (2009/06/23 16:24)
- ライフサイクルから理解するJSFの仕組み - (2009/06/24 17:43)
- JSF開発におけるweb.xmlの基本的な設定方法 - (2009/03/13 18:13)
- JSF Webページ(JSP)の基本的な書き方 - (2009/03/16 11:58)
- JSF Managed-Beanの定義・設定・使い方 - (2009/03/16 14:48)
- JSF メッセージ処理 概要 - (2009/06/20 20:01)
- JSF Validator入門 - 標準Validator及びその使い方 - (2009/06/22 18:26)
- JSF Converter入門 - 標準Converter及びその使い方 - (2009/06/23 17:17)
- JSF画面遷移 - (2009/06/24 18:08)