javax.el

## Class StaticFieldELResolver

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

    public class StaticFieldELResolver
    extends ELResolver

An `ELResolver` for resolving static fields, enum constants and static methods. Also handles constructor calls as a special case.

The resolver handles base objects of the type `ELClass`, which is usually generated by an EL implementation.

Since:
  EL 3.0
See Also:
  `ELClass`

### Field Summary

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

`RESOLVABLE_AT_DESIGN_TIME, TYPE`

### Constructor Summary

Constructors
Constructor and Description
`StaticFieldELResolver()`

### Method Summary

Methods
`java.lang.Class<?>` `getCommonPropertyType(ELContext context, java.lang.Object base)` Returns the type of the property.
`java.util.Iterator<java.beans.FeatureDescriptor>` `getFeatureDescriptors(ELContext context, java.lang.Object base)` Returns the properties that can be resolved.
`java.lang.Class<?>` `getType(ELContext context, java.lang.Object base, java.lang.Object property)` Returns the type of a static field.
`java.lang.Object` `getValue(ELContext context, java.lang.Object base, java.lang.Object property)` Returns the value of a static field.
`java.lang.Object` `invoke(ELContext context, java.lang.Object base, java.lang.Object method, java.lang.Class<?>[] paramTypes, java.lang.Object[] params)` Invokes a public static method or the constructor for a class.
`boolean` `isReadOnly(ELContext context, java.lang.Object base, java.lang.Object property)` Inquires whether the static field is writable.
`void` `setValue(ELContext context, java.lang.Object base, java.lang.Object property, java.lang.Object value)` Attempts to write to a static field.

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

`convertToType`

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

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

### Constructor Detail

#### StaticFieldELResolver

    public StaticFieldELResolver()

### Method Detail

#### getValue

    public java.lang.Object getValue(ELContext context,
                            java.lang.Object base,
                            java.lang.Object property)

Returns the value of a static field.

If the base object is an instance of `ELClass` and the property is String, 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.

If the property is the string "class", return the `java.lang.Class` instance of the class specified in `ELClass`. If the property is a public static field of class specified in `ELClass`, return the value of the static field. An Enum constant is a public static field of an Enum object, and is a special case of this.

Specified by:
  `getValue` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`.
  `property` - The string "class", or a static field name.
Returns:
  If the `propertyResolved` property of `ELContext` was set to `true`, then the Class instance for the class or the static field value.
Throws:
  `java.lang.NullPointerException` - if context is `null`.
  `PropertyNotFoundException` - if the specified class does not exist, or if the field is not a public static filed of the class, or if the field is inacessible.

#### setValue

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

Attempts to write to a static field.

If the base object is an instance of `ELClass`and the property is String, a `PropertyNotWritableException` will always be thrown, because writing to a static field is not allowed.

Specified by:
  `setValue` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`
  `property` - The name of the field
  `value` - The value to set the field of the class to.
Throws:
  `java.lang.NullPointerException` - if context is `null`
  `PropertyNotWritableException`

#### invoke

    public java.lang.Object invoke(ELContext context,
                          java.lang.Object base,
                          java.lang.Object method,
                          java.lang.Class<?>[] paramTypes,
                          java.lang.Object[] params)

Invokes a public static method or the constructor for a class.

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

Invoke the public static method specified by `method`.

The process involved in the method selection is the same as that used in `BeanELResolver`.

As a special case, if the name of the method is "<init>", the constructor for the class will be invoked.

Overrides:
  `invoke` in class `ELResolver`
Parameters:
  `base` - An `ELClass`
  `method` - When coerced to a `String`, the simple name of the method.
  `paramTypes` - An array of Class objects identifying the method's formal parameter types, in declared order. Use an empty array if the method has no parameters. Can be `null`, in which case the method's formal parameter types are assumed to be unknown.
  `params` - The parameters to pass to the method, or `null` if no parameters.
  `context` - The context of this evaluation.
Returns:
  The result of the method invocation (`null` if the method has a `void` return type).
Throws:
  `MethodNotFoundException` - if no suitable method can be found.
  `ELException` - if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an `InvocationTargetException`, extract its `cause` and pass it to the `ELException` constructor.

#### getType

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

Returns the type of a static field.

If the base object is an instance of `ELClass`and the property is a String, the `propertyResolved` property of the `ELContext` object must be set to `true` by the resolver, before returning. If this property is not `true` after this method is called, the caller can safely assume no value has been set.

If the property is the string "class", returns `java.lang.Class.class`. If the property string is a public static field of class specified in ELClass, return the type of the static field.

Specified by:
  `getType` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`.
  `property` - The name of the field.
Returns:
  If the `propertyResolved` property of `ELContext` was set to `true`, then the type of the type of the field.
Throws:
  `java.lang.NullPointerException` - if context is `null`.
  `PropertyNotFoundException` - if field is not a public static filed of the class, or if the field is inacessible.

#### isReadOnly

    public boolean isReadOnly(ELContext context,
                     java.lang.Object base,
                     java.lang.Object property)

Inquires whether the static field is writable.

If the base object is an instance of `ELClass`and the property is a String, the `propertyResolved` property of the `ELContext` object must be set to `true` by the resolver, before returning. If this property is not `true` after this method is called, the caller can safely assume no value has been set.

Always returns a `true` because writing to a static field is not allowed.

Specified by:
  `isReadOnly` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`.
  `property` - The name of the bean.
Returns:
  `true`
Throws:
  `java.lang.NullPointerException` - if context is `null`.

#### getFeatureDescriptors

    public java.util.Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context,
                                                                         java.lang.Object base)

Returns the properties that can be resolved. Always returns `null`, since there is no reason to iterate through a list of one element: field name.

Specified by:
  `getFeatureDescriptors` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`.
Returns:
  `null`.
See Also:
  `FeatureDescriptor`

#### getCommonPropertyType

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

Returns the type of the property. Always returns `String.class`, since a field name is a String.

Specified by:
  `getCommonPropertyType` in class `ELResolver`
Parameters:
  `context` - The context of this evaluation.
  `base` - An `ELClass`.
Returns:
  `String.class`.