javax.el

## Class ResourceBundleELResolver

- java.lang.Object
- - javax.el.ELResolver
  - - javax.el.ResourceBundleELResolver

-     public class ResourceBundleELResolver
      extends ELResolver

  Defines property resolution behavior on instances of `ResourceBundle`.

  This resolver handles base objects of type `java.util.ResourceBundle`. It accepts any object as a property and coerces it to a `java.lang.String` for invoking `ResourceBundle.getObject(java.lang.String)`.

  This resolver is read only and will throw a `PropertyNotWritableException` if `setValue` is called.

  `ELResolver`s are combined together using `CompositeELResolver`s, to define rich semantics for evaluating an expression. See the javadocs for `ELResolver` for details.

  Since:
    JSP 2.1
  See Also:
    `CompositeELResolver`, `ELResolver`, `ResourceBundle`

- - ### Field Summary

    - ### Fields inherited from class javax.el.ELResolver

      `RESOLVABLE_AT_DESIGN_TIME, TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResourceBundleELResolver()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Class<?>` | `getCommonPropertyType(ELContext context, Object base)` If the base object is a ResourceBundle, returns the most general type that this resolver accepts for the `property` argument.
    `Iterator<FeatureDescriptor>` | `getFeatureDescriptors(ELContext context, Object base)` If the base object is a ResourceBundle, returns an `Iterator` containing the set of keys available in the `ResourceBundle`.
    `Class<?>` | `getType(ELContext context, Object base, Object property)` If the base object is an instance of `ResourceBundle`, return `null`, since the resolver is read only.
    `Object` | `getValue(ELContext context, Object base, Object property)` If the base object is an instance of `ResourceBundle`, the provided property will first be coerced to a `String`.
    `boolean` | `isReadOnly(ELContext context, Object base, Object property)` If the base object is not null and an instanceof `ResourceBundle`, return `true`.
    `void` | `setValue(ELContext context, Object base, Object property, Object value)` If the base object is a ResourceBundle, throw a `PropertyNotWritableException`.

    - ### Methods inherited from class javax.el.ELResolver

      `convertToType, invoke`

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

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

- - ### Constructor Detail

    - #### ResourceBundleELResolver

          public ResourceBundleELResolver()

  - ### Method Detail

    - #### getValue

          public Object getValue(ELContext context,
                        Object base,
                        Object property)

      If the base object is an instance of `ResourceBundle`, the provided property will first be coerced to a `String`. The `Object` returned by `getObject` on the base `ResourceBundle` will be returned. If the base is `ResourceBundle`, the `propertyResolved` property of the `ELContext` object must be set to `true` by this resolver, before returning. If this property is not `true` after this method is called, the caller should ignore the return value.
      Specified by:
        `getValue` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - The ResourceBundle to analyze.
        `property` - The name of the property to analyze. Will be coerced to a `String`.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then `null` if property is `null`; otherwise the `Object` for the given key (property coerced to `String`) from the `ResourceBundle`. If no object for the given key can be found, then the `String` "???" + key + "???".
      Throws:
        `NullPointerException` - if context is `null`
        `ELException` - if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.

    - #### getType

          public Class<?> getType(ELContext context,
                         Object base,
                         Object property)

      If the base object is an instance of `ResourceBundle`, return `null`, since the resolver is read only.

      If the base is `ResourceBundle`, the `propertyResolved` property of the `ELContext` object must be set to `true` by this resolver, before returning. If this property is not `true` after this method is called, the caller should ignore the return value.

      Specified by:
        `getType` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - The ResourceBundle to analyze.
        `property` - The name of the property to analyze.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then `null`; otherwise undefined.
      Throws:
        `NullPointerException` - if context is `null`

    - #### setValue

          public void setValue(ELContext context,
                      Object base,
                      Object property,
                      Object value)

      If the base object is a ResourceBundle, throw a `PropertyNotWritableException`.
      Specified by:
        `setValue` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - The ResourceBundle to be modified. Only bases that are of type ResourceBundle are handled.
        `property` - The String property to use.
        `value` - The value to be set.
      Throws:
        `NullPointerException` - if context is `null`.
        `PropertyNotWritableException` - Always thrown if base is an instance of ReasourceBundle.

    - #### isReadOnly

          public boolean isReadOnly(ELContext context,
                           Object base,
                           Object property)

      If the base object is not null and an instanceof `ResourceBundle`, return `true`.
      Specified by:
        `isReadOnly` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - The ResourceBundle to be modified. Only bases that are of type ResourceBundle are handled.
        `property` - The String property to use.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then `true`; otherwise undefined.
      Throws:
        `NullPointerException` - if context is `null`

    - #### getFeatureDescriptors

          public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
                                                          Object base)

      If the base object is a ResourceBundle, returns an `Iterator` containing the set of keys available in the `ResourceBundle`. Otherwise, returns `null`.

      The `Iterator` returned must contain zero or more instances of `FeatureDescriptor`. Each info object contains information about a key in the ResourceBundle, and is initialized as follows:

    - displayName - The `String` key
    - name - Same as displayName property.
    - shortDescription - Empty string
    - expert - `false`
    - hidden - `false`
    - preferred - `true`
    In addition, the following named attributes must be set in the returned `FeatureDescriptor`s:
    - `ELResolver.TYPE` - `String.class`
    - `ELResolver.RESOLVABLE_AT_DESIGN_TIME` - `true`

Specified by:
  `getFeatureDescriptors` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - The bundle whose keys are to be iterated over. Only bases of type `ResourceBundle` are handled by this resolver.
Returns:
  An `Iterator` containing zero or more (possibly infinitely more) `FeatureDescriptor` objects, each representing a key in this bundle, or `null` if the base object is not a ResourceBundle.
See Also:
  `FeatureDescriptor`

- #### getCommonPropertyType

      public Class<?> getCommonPropertyType(ELContext context,
                                   Object base)

  If the base object is a ResourceBundle, returns the most general type that this resolver accepts for the `property` argument. Otherwise, returns `null`.

  Assuming the base is a `ResourceBundle`, this method will always return `String.class`.

  Specified by:
    `getCommonPropertyType` in class `ELResolver`
  Parameters:
    `context` - The context of this evaluation.
    `base` - The bundle to analyze. Only bases of type `ResourceBundle` are handled by this resolver.
  Returns:
    `null` if base is not a `ResourceBundle`; otherwise `String.class`.

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