Defines variable resolution behavior for scoped attributes.
| Method from javax.servlet.jsp.el.ScopedAttributeELResolver Detail: |
public Class getCommonPropertyType(ELContext context,
Object base) {
if (base == null) {
return String.class;
}
return null;
}
If the base object is null, returns
String.class. Otherwise, returns null. |
public Iterator getFeatureDescriptors(ELContext context,
Object base) {
Enumeration attrs;
ArrayList< FeatureDescriptor > list = new ArrayList< FeatureDescriptor >();
PageContext ctxt = (PageContext) context.getContext(JspContext.class);
attrs = ctxt.getAttributeNamesInScope(PageContext.PAGE_SCOPE);
while (attrs.hasMoreElements()) {
String name = (String) attrs.nextElement();
Object value = ctxt.getAttribute(name, PageContext.PAGE_SCOPE);
FeatureDescriptor descriptor = new FeatureDescriptor();
descriptor.setName(name);
descriptor.setDisplayName(name);
descriptor.setShortDescription("page scope attribute");
descriptor.setExpert(false);
descriptor.setHidden(false);
descriptor.setPreferred(true);
descriptor.setValue("type", value.getClass());
descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
list.add(descriptor);
}
attrs = ctxt.getAttributeNamesInScope(PageContext.REQUEST_SCOPE);
while (attrs.hasMoreElements()) {
String name = (String) attrs.nextElement();
Object value = ctxt.getAttribute(name, PageContext.REQUEST_SCOPE);
FeatureDescriptor descriptor = new FeatureDescriptor();
descriptor.setName(name);
descriptor.setDisplayName(name);
descriptor.setShortDescription("request scope attribute");
descriptor.setExpert(false);
descriptor.setHidden(false);
descriptor.setPreferred(true);
descriptor.setValue("type", value.getClass());
descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
list.add(descriptor);
}
attrs = ctxt.getAttributeNamesInScope(PageContext.SESSION_SCOPE);
while (attrs.hasMoreElements()) {
String name = (String) attrs.nextElement();
Object value = ctxt.getAttribute(name, PageContext.SESSION_SCOPE);
FeatureDescriptor descriptor = new FeatureDescriptor();
descriptor.setName(name);
descriptor.setDisplayName(name);
descriptor.setShortDescription("session scope attribute");
descriptor.setExpert(false);
descriptor.setHidden(false);
descriptor.setPreferred(true);
descriptor.setValue("type", value.getClass());
descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
list.add(descriptor);
}
attrs = ctxt.getAttributeNamesInScope(PageContext.APPLICATION_SCOPE);
while (attrs.hasMoreElements()) {
String name = (String) attrs.nextElement();
Object value = ctxt.getAttribute(name, PageContext.APPLICATION_SCOPE);
FeatureDescriptor descriptor = new FeatureDescriptor();
descriptor.setName(name);
descriptor.setDisplayName(name);
descriptor.setShortDescription("application scope attribute");
descriptor.setExpert(false);
descriptor.setHidden(false);
descriptor.setPreferred(true);
descriptor.setValue("type", value.getClass());
descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
list.add(descriptor);
}
return list.iterator();
}
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
java.beans.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 FeatureDescriptors:
- ELResolver#TYPE - The current runtime type of the scoped attribute.
- ELResolver#RESOLVABLE_AT_DESIGN_TIME -
true.
|
public Class getType(ELContext context,
Object base,
Object property) {
if (context == null) {
throw new NullPointerException();
}
if (base == null) {
context.setPropertyResolved(true);
return Object.class;
}
return null;
}
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. |
public Object getValue(ELContext context,
Object base,
Object property) {
if (context == null) {
throw new NullPointerException();
}
if (base == null) {
context.setPropertyResolved(true);
if (property instanceof String) {
String attribute = (String) property;
PageContext ctxt = (PageContext)
context.getContext(JspContext.class);
return ctxt.findAttribute(attribute);
}
}
return null;
}
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. |
public boolean isReadOnly(ELContext context,
Object base,
Object property) {
if (context == null) {
throw new NullPointerException();
}
if (base == null) {
context.setPropertyResolved(true);
}
return false;
}
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. |
public void setValue(ELContext context,
Object base,
Object property,
Object val) {
if (context == null) {
throw new NullPointerException();
}
if (base == null) {
context.setPropertyResolved(true);
if (property instanceof String) {
PageContext ctxt = (PageContext)
context.getContext(JspContext.class);
String attr = (String) property;
if (ctxt.getAttribute(attr, PageContext.REQUEST_SCOPE) != null)
ctxt.setAttribute(attr, val, PageContext.REQUEST_SCOPE);
else if (ctxt.getAttribute(attr, PageContext.SESSION_SCOPE) != null)
ctxt.setAttribute(attr, val, PageContext.SESSION_SCOPE);
else if (ctxt.getAttribute(attr, PageContext.APPLICATION_SCOPE) != null)
ctxt.setAttribute(attr, val, PageContext.APPLICATION_SCOPE);
else {
ctxt.setAttribute(attr, val, PageContext.PAGE_SCOPE);
}
}
}
}
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. |