JavaServer Faces ユーザーズガイド
目次 前ページ次ページ

第3章 JavaServer Facesアプリケーションの開発

3.5 コンバータの作成

コンバータはjavax.faces.component.ValueHolderインタフェースを実装しているUIコンポーネントに対して設定することができます。
標準で用意されているコンバータを利用する方法と、カスタムコンバータを作成する方法があります。

■標準コンバータ

標準コンバータとして、次が用意されています。

BigDecimalConverterjava.math.BigDecimalへの変換
BigIntegerConverterjava.math.BigIntegerへの変換
BooleanConverterjava.lang.Booleanへの変換
ByteConverterjava.lang.Byteへの変換
CharacterConverterjava.lang.Characterへの変換
DateTimeConverterjava.text.SimpleDateFormatに指定可能なパターンへの変換
DoubleConverterjava.lang.Doubleへの変換
FloatConverterjava.lang.Floatへの変換
IntegerConverterjava.lang.Integerへの変換
LongConverterjava.lang.Longへの変換
NumberConverterjava.text.DecimalFormatに指定可能なパターンへの変換
ShortConverterjava.lang.Shortへの変換

コンバータを利用する場合は、タグのconverterアトリビュートか、f:converterタグを利用して、使用するコンバータのIDを指定します。
標準コンバータの場合は、コンバータのIDに"javax.faces.[Converterを除いたコンバータ名]"を指定します。
例えば"javax.faces.BigDecimal"のように指定します。

■カスタムコンバータ

任意のオブジェクトに変換したい場合はカスタムコンバータを作成することができます。 カスタムコンバータはjavax.faces.convert.Converterインタフェースを実装して作成します。

[カスタムコンバータの例]
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

public class MyConverter implements javax.faces.convert.Converter {
  public Object getAsObject(FacesContext context, UIComponent component, String value) {
    // String→Objectの変換規則(業務ロジックへの上り)を記述
  }
  
  public String getAsString(FacesContext context, UIComponent component, Object value) {
    // Object→Stringの変換規則(画面への下り)を記述
  }
}

作成したコンバータをJavaServer Faces定義ファイル(faces-config.xml)にコンバータのIDを付けて登録します。

<faces-config>
  ...
  <converter>
    <converter-id>myConverter</converter-id>
    <converter-class>mypkg.MyConverter</converter-class>
  </converter>
  ...
</faces-config>

■コンバータの利用方法

コンバータを利用するには、利用するコンバータのIDを指定します。タグのconverterアトリビュートを記述する方法と、f:converterタグを利用する方法があります。
以下に記述例を示します。

[convertアトリビュートに記述する方法]
<h:inputText value="#{myBean.bigDecimal}" converter="javax.faces.BigDecimalConverter" />
[f:converterタグを利用する方法]
<h:inputText value="#{myBean.bigDecimal}" >
  <f:converter converterId="myConverter"/>
</h:inputText>

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2005