カスタムJSFコンバータについて

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と、StateHoldersaveState(FacesContext)メソッドおよびrestoreState(FacesContext, Object)メソッドも実装する必要があります。詳細は、javax.faces.componentStateHolderインタフェースに関するJavadocを参照してください。

アプリケーションでカスタム・コンバータを使用するには、次の処理を実行する必要があります。

注意: カスタム・コンバータが特定のデータ型に対するクラスでアプリケーションに登録された場合、コンポーネントの値でカスタム・コンバータ・オブジェクトと同じ型の値バインディングが参照(次に示すコード・スニペットを参照)されるたびに、JSFによってそのクラスのコンバータが自動的に使用され、データが変換されます。この場合、converter属性またはf:converterタグを使用してコンポーネントにカスタム・コンバータを登録する必要はありません。

<h:inputText value="#{myBean.myProperty}"/>    

この例で、myPropertyはカスタム・コンバータと同じ型です。


カスタムJSFコンバータおよびバリデータに対するエラー・メッセージについて
コンバータ属性について
アプリケーションへのカスタムのコンバータまたはバリデータの登録
コンバータIDを使用したコンポーネントへのカスタム・コンバータ・インスタンスの登録
値バインディング式を使用したコンポーネントへのカスタム・コンバータ・インスタンスの登録