@Retention(value=RUNTIME) @Target(value={TYPE,FIELD,METHOD,PARAMETER}) @Inherited @Qualifier public @interface FacesConverter
 The presence of this annotation on a class automatically registers the
 class with the runtime as a Converter. The value of the value() attribute is taken to be
 converter-id, the value of the forClass() attribute is taken to be converter-for-class and
 the fully qualified class name of the class to which this annotation is attached is taken to be the
 converter-class. The implementation must guarantee that for each class annotated with
 FacesConverter, found with the algorithm in section 11.5 of the spec prose document, the proper variant of
 Application.addConverter() is called. If converter-id is not the empty string,
 Application.addConverter(java.lang.String,java.lang.String) is called, passing the
 derived converter-id as the first argument and the derived converter-class as the second argument.
 If converter-id is the empty string,
 Application.addConverter(java.lang.Class,java.lang.String) is called, passing the
 converter-for-class as the first argument and the derived converter-class as the second argument.
 The implementation must guarantee that all such calls to addConverter() happen during application
 startup time and before any requests are serviced.
 
 The preceding text contains an important subtlety which application users should understand. It is not possible to
 use a single @FacesConverter annotation to register a single Converter implementation both in the
 by-class and the by-converter-id data structures. One way to achieve this result is to put the actual
 converter logic in an abstract base class, without a @FacesConverter annotation, and derive two sub-classes,
 each with a @FacesConverter annotation. One sub-class has a value attribute but no forClass
 attribute, and the other sub-class has the converse.
 
 Please see the ViewDeclarationLanguage documentation for <h:selectManyListBox> for another important subtlety regarding converters and collections.
 
| Modifier and Type | Optional Element and Description | 
|---|---|
Class | 
forClass
 The value of this annotation attribute is taken to be the converter-for-class with which instances of this
 class of converter can be instantiated by calling
   | 
boolean | 
managed
The value of this annotation attribute is taken to be an indicator that flags whether or not the given converter is a CDI managed converter.  | 
String | 
value
 The value of this annotation attribute is taken to be the converter-id with which instances of this class of
 converter can be instantiated by calling
   | 
public abstract String value
 The value of this annotation attribute is taken to be the converter-id with which instances of this class of
 converter can be instantiated by calling
 Application.createConverter(java.lang.String).
 
public abstract Class forClass
 The value of this annotation attribute is taken to be the converter-for-class with which instances of this
 class of converter can be instantiated by calling
 Application.createConverter(java.lang.Class).
 
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.