javax.faces.convert

## Class EnumConverter

- java.lang.Object
- - javax.faces.convert.EnumConverter

- All Implemented Interfaces:
    PartialStateHolder, StateHolder, Converter

      public class EnumConverter
      extends Object
      implements Converter, PartialStateHolder

  `Converter` implementation for `java.lang.Enum` (and enum primitive) values.

  Since:
    1.2

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `CONVERTER_ID` The standard converter id for this converter.
    `static String` | `ENUM_ID` The message identifier of the `FacesMessage` to be created if the conversion to `Enum` fails.
    `static String` | `ENUM_NO_CLASS_ID` The message identifier of the `FacesMessage` to be created if the conversion to `Enum` fails and no target class has been provided.

    - ### Fields inherited from interface javax.faces.convert.Converter

      `DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EnumConverter()`
    `EnumConverter(Class targetClass)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearInitialState()` Reset the PartialStateHolder to a non-delta tracking state.
    `Object` | `getAsObject(FacesContext context, UIComponent component, String value)` Convert the `value` argument to one of the enum constants of the class provided in our constructor.
    `String` | `getAsString(FacesContext context, UIComponent component, Object value)` Convert the enum constant given by the `value` argument into a String.
    `boolean` | `initialStateMarked()` Return `true` if delta state changes are being tracked, otherwise `false`
    `boolean` | `isTransient()` If true, the Object implementing this interface must not participate in state saving or restoring.
    `void` | `markInitialState()` The runtime must ensure that the `PartialStateHolder.markInitialState()` method is called on each instance of this interface in the view at the appropriate time to indicate the component is in its initial state.
    `void` | `restoreState(FacesContext facesContext, Object object)` Perform any processing required to restore the state from the entries in the state Object.
    `Object` | `saveState(FacesContext facesContext)` Gets the state of the instance as a `Serializable` Object.
    `void` | `setTransient(boolean b)` Denotes whether or not the Object implementing this interface must or must not participate in state saving or restoring.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### CONVERTER_ID

          public static final String CONVERTER_ID

      The standard converter id for this converter.

      See Also:
        Constant Field Values

    - #### ENUM_ID

          public static final String ENUM_ID

      The message identifier of the `FacesMessage` to be created if the conversion to `Enum` fails. The message format string for this message may optionally include the following placeholders:

      - `{0}` replaced by the unconverted value.
      - `{1}` replaced by one of the enum constants or the empty string if none can be found.
      - `{2}` replaced by a `String` whose value is the label of the input component that produced this message.
      See Also:
        Constant Field Values

    - #### ENUM_NO_CLASS_ID

          public static final String ENUM_NO_CLASS_ID

      The message identifier of the `FacesMessage` to be created if the conversion to `Enum` fails and no target class has been provided. The message format string for this message may optionally include the following placeholders:

      - `{0}` replaced by the unconverted value.
      - `{1}` replaced by a `String` whose value is the label of the input component that produced this message.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### EnumConverter

          public EnumConverter()

    - #### EnumConverter

          public EnumConverter(Class targetClass)

  - ### Method Detail

    - #### getAsObject

          public Object getAsObject(FacesContext context,
                           UIComponent component,
                           String value)

      Convert the `value` argument to one of the enum constants of the class provided in our constructor. If no target class argument has been provided to the constructor of this instance, throw a `ConverterException` containing the `ENUM_NO_CLASS_ID` message with proper parameters. If the `value` argument is `null` or it has a length of zero, return `null`. Otherwise, perform the equivalent of `Enum.valueOf` using target class and `value` and return the `Object`. If the conversion fails, throw a `ConverterException` containing the `ENUM_ID` message with proper parameters.

      Specified by:
        `getAsObject` in interface `Converter`
      Parameters:
        `context` - the `FacesContext` for this request.
        `component` - the `UIComponent` to which this value will be applied.
        `value` - the String `value` to be converted to `Object`.
      Returns:
        `null` if the value to convert is `null`, otherwise the result of the conversion
      Throws:
        `ConverterException` - if conversion cannot be successfully performed
        `NullPointerException` - if `context` or `component` is `null`

    - #### getAsString

          public String getAsString(FacesContext context,
                           UIComponent component,
                           Object value)

      Convert the enum constant given by the `value` argument into a String. If no target class argument has been provided to the constructor of this instance, throw a `ConverterException` containing the `ENUM_NO_CLASS_ID` message with proper parameters. If the `value` argument is `null`, return `null`. If the value is an instance of the provided target class, return its string value by casting it to a `java.lang.Enum` and returning the result of calling the `name()` method. Otherwise, throw a `ConverterException` containing the `ENUM_ID` message with proper parameters.

      Specified by:
        `getAsString` in interface `Converter`
      Parameters:
        `context` - `FacesContext` for the request being processed
        `component` - `UIComponent` with which this model object value is associated
        `value` - Model object value to be converted (may be `null`)
      Returns:
        a zero-length String if value is `null`, otherwise the result of the conversion
      Throws:
        `ConverterException` - if conversion cannot be successfully performed
        `NullPointerException` - if `context` or `component` is `null`

    - #### restoreState

          public void restoreState(FacesContext facesContext,
                          Object object)

      Description copied from interface: `StateHolder`

      Perform any processing required to restore the state from the entries in the state Object.

      If the class that implements this interface has references to instances that also implement StateHolder (such as a `UIComponent` with event handlers, validators, etc.) this method must call the `StateHolder.restoreState(javax.faces.context.FacesContext, java.lang.Object)` method on all those instances as well.

      If the `state` argument is `null`, take no action and return.

      Specified by:
        `restoreState` in interface `StateHolder`

    - #### saveState

          public Object saveState(FacesContext facesContext)

      Description copied from interface: `StateHolder`

      Gets the state of the instance as a `Serializable` Object.

      If the class that implements this interface has references to instances that implement StateHolder (such as a `UIComponent` with event handlers, validators, etc.) this method must call the `StateHolder.saveState(javax.faces.context.FacesContext)` method on all those instances as well. This method must not save the state of children and facets. That is done via the `StateManager`

      This method must not alter the state of the implementing object. In other words, after executing this code:

      `

           Object state = component.saveState(facesContext);

      `

      `component` should be the same as before executing it.

      The return from this method must be `Serializable`

      Specified by:
        `saveState` in interface `StateHolder`

    - #### setTransient

          public void setTransient(boolean b)

      Description copied from interface: `StateHolder`

      Denotes whether or not the Object implementing this interface must or must not participate in state saving or restoring.

      Specified by:
        `setTransient` in interface `StateHolder`
      Parameters:
        `b` - boolean pass `true` if this Object will not participate in state saving or restoring, otherwise pass `false`.

    - #### isTransient

          public boolean isTransient()

      Description copied from interface: `StateHolder`

      If true, the Object implementing this interface must not participate in state saving or restoring.

      Specified by:
        `isTransient` in interface `StateHolder`

    - #### markInitialState

          public void markInitialState()

      Description copied from interface: `PartialStateHolder`

      The runtime must ensure that the `PartialStateHolder.markInitialState()` method is called on each instance of this interface in the view at the appropriate time to indicate the component is in its initial state. The implementor of the interface must ensure that `PartialStateHolder.initialStateMarked()` returns `true` from the time `markInitialState()` is called until `PartialStateHolder.clearInitialState()` is called, after which time `initialStateMarked()` must return `false`. Also, during the time that the instance returns `true` from `initialStateMarked()`, the implementation must return only the state that has changed in its implementation of `StateHolder.saveState(javax.faces.context.FacesContext)`.

      Specified by:
        `markInitialState` in interface `PartialStateHolder`

    - #### initialStateMarked

          public boolean initialStateMarked()

      Description copied from interface: `PartialStateHolder`

      Return `true` if delta state changes are being tracked, otherwise `false`

      Specified by:
        `initialStateMarked` in interface `PartialStateHolder`

    - #### clearInitialState

          public void clearInitialState()

      Description copied from interface: `PartialStateHolder`

      Reset the PartialStateHolder to a non-delta tracking state.

      Specified by:
        `clearInitialState` in interface `PartialStateHolder`

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.