JavaServer Faces ユーザーズガイド
|
目次
|
3.5 コンバータの作成
コンバータはjavax.faces.component.ValueHolder
インタフェースを実装しているUIコンポーネントに対して設定することができます。
標準で用意されているコンバータを利用する方法と、カスタムコンバータを作成する方法があります。
■標準コンバータ
標準コンバータとして、次が用意されています。
BigDecimalConverter | java.math.BigDecimalへの変換 |
BigIntegerConverter | java.math.BigIntegerへの変換 |
BooleanConverter | java.lang.Booleanへの変換 |
ByteConverter | java.lang.Byteへの変換 |
CharacterConverter | java.lang.Characterへの変換 |
DateTimeConverter | java.text.SimpleDateFormatに指定可能なパターンへの変換 |
DoubleConverter | java.lang.Doubleへの変換 |
FloatConverter | java.lang.Floatへの変換 |
IntegerConverter | java.lang.Integerへの変換 |
LongConverter | java.lang.Longへの変換 |
NumberConverter | java.text.DecimalFormatに指定可能なパターンへの変換 |
ShortConverter | java.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