JSF標準コンバータでは、最も一般的なデータ型変換が提供されます。コンポーネントのデータを標準型以外の型に変換する必要がある場合は、独自のカスタム・コンバータを作成できます。
カスタム・コンバータの作成方法については、このトピックでは詳しく説明しません。簡単に説明すると、カスタム・コンバータは、javax.faces.convert.Converter
インタフェースを実装する必要があります。カスタム実装では、文字列と目的の型のオブジェクト間でコンポーネント・データを変換する方法を定義し、Converter
インタフェースのgetAsObject
メソッドとgetAsString
メソッドをオーバーライドする必要があります。javax.faces.convert.ConverterException
を使用して適切な例外をスローし、javax.faces.application.FacesMessage
を使用して対応するエラー・メッセージを作成します。詳細は、javax.faces.convert.Converter
およびjavax.faces.application.FacesMessage
に関するJavadocを参照するか、またはjava.sun.comのWebページhttp://java.sun.com/j2ee/javaserverfaces/にアクセスしてください。
アプリケーションで状態をクライアントに保存する場合は、カスタム・コンバータ実装がシリアライズ可能であるか、またはStateHolder
と、StateHolder
のsaveState(FacesContext)
メソッドおよびrestoreState(FacesContext, Object)
メソッドも実装する必要があります。詳細は、javax.faces.component
のStateHolder
インタフェースに関するJavadocを参照してください。
アプリケーションでカスタム・コンバータを使用するには、次の処理を実行する必要があります。
faces-config.xml
)にカスタム・コンバータを登録します。コンバータ識別子(ID)または特定のデータ型に対する完全修飾クラス名で登録できます。
converter
を使用するか、またはコンポーネント内にf:converter
タグをネストします。
注意: カスタム・コンバータが特定のデータ型に対するクラスでアプリケーションに登録された場合、コンポーネントの値でカスタム・コンバータ・オブジェクトと同じ型の値バインディングが参照(次に示すコード・スニペットを参照)されるたびに、JSFによってそのクラスのコンバータが自動的に使用され、データが変換されます。この場合、converter
属性またはf:converter
タグを使用してコンポーネントにカスタム・コンバータを登録する必要はありません。
<h:inputText value="#{myBean.myProperty}"/>
この例で、myProperty
はカスタム・コンバータと同じ型です。
カスタムJSFコンバータおよびバリデータに対するエラー・メッセージについて
コンバータ属性について
アプリケーションへのカスタムのコンバータまたはバリデータの登録
コンバータIDを使用したコンポーネントへのカスタム・コンバータ・インスタンスの登録
値バインディング式を使用したコンポーネントへのカスタム・コンバータ・インスタンスの登録
Copyright © 1997, 2007, Oracle. All rights reserved.