javax.servlet.jsp.el

## Class ScopedAttributeELResolver

- java.lang.Object
- - javax.el.ELResolver
  - - javax.servlet.jsp.el.ScopedAttributeELResolver

-     public class ScopedAttributeELResolver
      extends ELResolver

  Defines variable resolution behavior for scoped attributes.

  This resolver handles all variable resolutions (where `base` is `null`. It searches `PageContext.findAttribute()` for a matching attribute. If not found, it will return `null`, or in the case of `setValue` it will create a new attribute in the page scope with the given name.

  Since:
    JSP 2.1
  See Also:
    `ELResolver`

- - ### Field Summary

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

      `RESOLVABLE_AT_DESIGN_TIME, TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ScopedAttributeELResolver()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Class<String>` | `getCommonPropertyType(ELContext context, Object base)` If the base object is `null`, returns `String.class`.
    `Iterator<FeatureDescriptor>` | `getFeatureDescriptors(ELContext context, Object base)` If the base object is `null`, returns an `Iterator` containing `FeatureDescriptor` objects with information about each scoped attribute resolved by this resolver.
    `Class<Object>` | `getType(ELContext context, Object base, Object property)` If the base object is `null`, returns `Object.class` to indicate that any type is valid to set for a scoped attribute.
    `Object` | `getValue(ELContext context, Object base, Object property)` If the base object is `null`, searches the page, request, session and application scopes for an attribute with the given name and returns it, or `null` if no attribute exists with the current name.
    `boolean` | `isReadOnly(ELContext context, Object base, Object property)` If the base object is `null`, returns `false` to indicate that scoped attributes are never read-only.
    `void` | `setValue(ELContext context, Object base, Object property, Object val)` If the base object is `null`, sets an existing scoped attribute to the new value, or creates a new scoped attribute if one does not exist by this name.

    - ### 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

    - #### ScopedAttributeELResolver

          public ScopedAttributeELResolver()

  - ### Method Detail

    - #### getValue

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

      If the base object is `null`, searches the page, request, session and application scopes for an attribute with the given name and returns it, or `null` if no attribute exists with the current name.

      The `propertyResolved` property of the `ELContext` object must be set to `true` by this resolver before returning if base is `null`. 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` - Only `null` is handled by this resolver. Other values will result in an immediate return.
        `property` - The name of the scoped attribute to resolve.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then the scoped attribute; otherwise undefined.
      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<Object> getType(ELContext context,
                              Object base,
                              Object property)

      If the base object is `null`, returns `Object.class` to indicate that any type is valid to set for a scoped attribute.

      The `propertyResolved` property of the `ELContext` object must be set to `true` by this resolver before returning if base is `null`. 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` - Only `null` is handled by this resolver. Other values will result in an immediate return.
        `property` - The name of the scoped attribute to resolve.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then `Object.class`; otherwise undefined.
      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.

    - #### setValue

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

      If the base object is `null`, sets an existing scoped attribute to the new value, or creates a new scoped attribute if one does not exist by this name.

      If the provided attribute name matches the key of an attribute in page scope, request scope, session scope, or application scope, the corresponding attribute value will be replaced by the provided value. Otherwise, a new page scope attribute will be created with the given name and value.

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

      Specified by:
        `setValue` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - Only `null` is handled by this resolver. Other values will result in an immediate return.
        `property` - The name of the scoped attribute to set.
        `val` - The value for the scoped attribute.
      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.

    - #### isReadOnly

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

      If the base object is `null`, returns `false` to indicate that scoped attributes are never read-only.

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

      Specified by:
        `isReadOnly` in class `ELResolver`
      Parameters:
        `context` - The context of this evaluation.
        `base` - Only `null` is handled by this resolver. Other values will result in an immediate return.
        `property` - The name of the scoped attribute.
      Returns:
        If the `propertyResolved` property of `ELContext` was set to `true`, then `false`; otherwise undefined.
      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.

    - #### getFeatureDescriptors

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

      If the base object is `null`, returns an `Iterator` containing `FeatureDescriptor` objects with information about each scoped attribute resolved by this resolver. Otherwise, returns `null`.

      The `Iterator` returned must contain one instance of `FeatureDescriptor` for each scoped attribute found in any scope. Each info object contains information about a single scoped attribute, and is initialized as follows:

    - displayName - The name of the scoped attribute.
    - name - Same as displayName property.
    - shortDescription - A suitable description for the scoped attribute. Should include the attribute's current scope (page, request, session, application). Will vary by implementation.
    - expert - `false`
    - hidden - `false`
    - preferred - `true`
    In addition, the following named attributes must be set in the returned `FeatureDescriptor`s:
    - `ELResolver.TYPE` - The current runtime type of the scoped attribute.
    - `ELResolver.RESOLVABLE_AT_DESIGN_TIME` - `true`.

Specified by:
  `getFeatureDescriptors` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - Only `null` is handled by this resolver. Other values will result in a `null` return value.
Returns:
  An `Iterator` containing one `FeatureDescriptor` object for each scoped attribute, or `null` if `base` is not `null`.
See Also:
  `FeatureDescriptor`

- #### getCommonPropertyType

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

  If the base object is `null`, returns `String.class`. Otherwise, returns `null`.
  Specified by:
    `getCommonPropertyType` in class `ELResolver`
  Parameters:
    `context` - The context of this evaluation.
    `base` - Only `null` is handled by this resolver. Other values will result in a `null` return value.
  Returns:
    `null` if base is not `null`; otherwise `String.class`.

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