@RetentionSE(valueSE=RUNTIMESE) @TargetSE(valueSE={TYPESE,FIELDSE,METHODSE,PARAMETERSE}) @InheritedSE @Qualifier public @interface FacesConverter
クラスでこのアノテーションの存在が自動的に Converter
として実行時にクラスを登録します。value()
属性の値は converter-id と見なされ、forClass()
属性の値は converter-for-class と見なされ、このアノテーションが付加されているクラスの完全修飾クラス名がコンバーターと見なされます。- クラス。実装は、仕様書のセクション 11.5 のアルゴリズムで見つかった FacesConverter
でアノテーションが付けられたクラスごとに、Application.addConverter()
の適切なバリアントが呼び出されることを保証する必要があります。コンバーター ID が空の文字列でない場合、Application.addConverter(java.lang.String,java.lang.String)
が呼び出され、派生したコンバーター ID が最初の引数として渡され、派生したコンバーター クラスが 2 番目の引数として渡されます。Converter-id が空の文字列の場合、Application.addConverter(java.lang.Class,java.lang.String)
が呼び出され、最初の引数としてクラス用コンバーターが渡され、2 番目の引数として派生したコンバーター クラスが渡されます。実装では、addConverter()
へのこのようなすべての呼び出しが、アプリケーションの起動時およびリクエストが処理される前に発生することを保証する必要があります。
前のテキストには、アプリケーションのユーザーが理解する必要がある重要な微妙さが含まれています。単一の @FacesConverter
アノテーションを使用して、by-class
および by-converter-id
データ構造の両方で単一の Converter
実装を登録することはできません。この結果を達成する 1 つの方法は、@FacesConverter
アノテーションなしで抽象基本クラスに実際のコンバーターロジックを配置し、それぞれ @FacesConverter
アノテーション付きの 2 つのサブクラスを派生させることです。1 つのサブクラスには value
属性がありますが、forClass
属性はなく、他のサブクラスにはその逆があります。
コンバーターとコレクションに関する別の重要な微妙な点については、<h:selectManyListBox>
の ViewDeclarationLanguage ドキュメントを参照してください。
修飾子と型 | オプションの要素と説明 |
---|---|
ClassSE | forClass このアノテーションの属性の値は、コンバーター - のためのクラスコンバーターのこのクラスのインスタンスは |
boolean | managed このアノテーション属性の値は、指定されたコンバーターが CDI 管理のコンバーターであるかどうかを示すインジケーターとして解釈されます。 |
StringSE | value このアノテーション属性の値は、 |
public abstract StringSE value
このアノテーション属性の値は、Application.createConverter(java.lang.String)
を呼び出すことにより、このクラスのコンバーターのインスタンスをインスタンス化できる converter-id と見なされます。
public abstract ClassSE forClass
このアノテーションの属性の値は、コンバーター - のためのクラスコンバーターのこのクラスのインスタンスは Application.createConverter(java.lang.Class)
を呼び出してインスタンス化することが可能なように解釈されます。
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.