public abstract class javax.el
ELResolver
| ArabicChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishFinnishFrenchGermanHebrewHindiHungarianIcelandicIndonesianItalianJapaneseKoreanMalayMarathiNorwegianPersianPolishPortuguesePortuguese (Brazil)Portuguese (Portugal)RussianSpanishSwedishThaiTurkishUkrainianReadPrint Show All Login
Java EE 5 SDK
![]() |
Extended by:
ArrayELResolver,
BeanELResolver,
CompositeELResolver,
ListELResolver,
MapELResolver,
ResourceBundleELResolver
Hide
zh_cn |
对一个表达式进行求值时,参考与
ELContext
关联的
ELResolver
,以对表达式的第一个变量进行初始解析。遇到
.
或
[]
操作符时也要参考它,但方法表达式中最后一个这样的操作符除外,因为在这种情况下解析规则是固定编码的。
例如,在 EL 表达式
${employee.lastName}
中,
ELResolver
确定
employee
引用的对象,以及获取该对象
lastName
属性的含义。
此类中的大多数方法都接受
base
和
property
参数。如果是变量解析(例如,确定
${employee.lastName}
中
employee
引用的内容),则
base
参数将为
null
,
property
参数将总是为
String
类型。这种情况下,如果
property
不是
String
,则
ELResolver
的行为未定义。
如果是属性解析,则
base
参数标识 base 对象,
property
对象标识 base 上的属性。例如,在表达式
${employee.lastName}
中,
base
是
employee
变量解析的结果,
property
是字符串
"lastName"
。在表达式
${y[x]}
中,
base
是
y
变量解析的结果,
property
是
x
变量解析的结果。
尽管只有一个
ELResolver
与
ELContext
关联,但对于任何给定的变量或属性解析,通常可以使用多个解析器。
ELResolver
使用
CompositeELResolver
连接到一起,以定义丰富语义来计算表达式。
对于
#getValue
、
#getType
、
#setValue
和
#isReadOnly
方法,
ELResolver
不负责解析所有可能的 (base, property) 对。实际上,大部分解析器将仅能处理一种类型的
base
。要指示解析器成功地解析特定 (base, property) 对,它必须将
ELContext
的
propertyResolved
属性设置为
true
。如果它无法处理给定对,则必须保持此属性不变。如果
propertyResolved
为
false
,则调用者必须忽略该方法的返回值。
设计
#getFeatureDescriptors
和
#getCommonPropertyType
方法的主要目的是支持设计时工具,但它们也必须在运行时处理调用。可以使用
java.beans.Beans#isDesignTime
方法确定是否在设计时(或运行时)参考了解析器。
since | JSP 2.1 |
See also | javax.el.CompositeELResolver, getELResolver |
Fields | ||
---|---|---|
final public static String | TYPE
FeatureDescriptor 中指定变量或属性的运行时类型的指定属性的属性名称。
| |
final public static String | RESOLVABLE_AT_DESIGN_TIME
FeatureDescriptor 中指定是否可以在运行时解析变量或属性的指定属性的属性名称。
|
Constructors | |
---|---|
public | ELResolver() |
Properties | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
abstract public Class<T> | getCommonPropertyType(ELContext context, Object base) Hide
base 对象的情况下,返回对于
property 参数此解析器可以接受的最一般类型。此方法可以用于自动完成的辅助工具。
此自动完成辅助工具还提供一种表示解析器接受原始值(如数组中的整数索引)的方式。例如,
ArrayELResolver 将接受任何
int 作为
property ,因此返回值将为
Integer.class 。
| |||||||||||||||||||||||||
abstract public java.util.Iterator<E> | getFeatureDescriptors(ELContext context, Object base) Hide
base 对象进行解析的变量或属性集的有关信息。此方法可以用于自动完成的辅助工具。
如果
base 参数为
null ,则解析器必须枚举它可以解析的顶级变量列表。
返回的
Iterator 必须包含 0 个或多个
java.beans.FeatureDescriptor 实例(无固定顺序)。如果是基本类型(如
int ),则必须返回值
null 。这样可以防止对所有可能的原始值进行无用迭代。返回值为
null 表示此解析器没有处理给定的
base 对象,或者结果太复杂而无法用此方法表示,此时应该使用
#getCommonPropertyType 方法。
每个
FeatureDescriptor 将包含有关单个变量或属性的信息。除了标准属性之外,
FeatureDescriptor 必须拥有两个指定属性(通过
setValue 方法设置):
调用者应该注意到返回的
Iterator 可能迭代非常大甚至无限大的属性集。调用者应该注意不要陷入无限循环。
这是一个最佳列表。并非所有
ELResolver 都将返回完全精确的结果,但它们都必须可以在设计时和运行时调用(即无论
Beans.isDesignTime() 是否返回
true )且不会引起错误。
ELContext 的
propertyResolved 属性与此方法无关。如果是复合解析器,则所有
ELResolver 的结果将串联在一起。
| |||||||||||||||||||||||||
abstract public boolean | isReadOnly(ELContext context, Object base, Object property) Hide
base 和
property ,尝试确定调用
#setValue 是否将总是失败。
如果此解析器处理给定的 (base, property) 对,则在返回前,
ELContext 对象的
propertyResolved 属性必须设置为
true 。如果调用此方法后此属性不为
true ,则调用者应该忽略返回值。
| |||||||||||||||||||||||||
abstract public Class<T> | getType(ELContext context, Object base, Object property) Hide
base 和
property ,尝试标识最一般的对象类型,该类型对于将来调用
#setValue 方法时作为
value 参数传递的对象而言是可接受的。
如果此解析器处理给定的 (base, property) 对,则在返回前,
ELContext 对象的
propertyResolved 属性必须设置为
true 。如果调用此方法后此属性不为
true ,则调用者应该忽略返回值。
这并非总是与
getValue().getClass() 相同。例如,如果是
ArrayELResolver ,则
getType 方法将返回数组的元素类型,它可能是当前指定数组元素中的实际元素类型的超类。
| |||||||||||||||||||||||||
abstract public void | setValue(ELContext context, Object base, Object property, Object value) Hide
base 对象上设置给定的
property 对象的值。
如果此解析器处理给定的 (base, property) 对,则在返回前,
ELContext 对象的
propertyResolved 属性必须设置为
true 。如果调用此方法后此属性不为
true ,则调用者可以放心地假定没有设置任何值。
| |||||||||||||||||||||||||
abstract public Object | getValue(ELContext context, Object base, Object property) Hide
base 对象上解析给定的
property 对象。
如果此解析器处理给定的 (base, property) 对,则在返回前,
ELContext 对象的
propertyResolved 属性必须设置为
true 。如果调用此方法后此属性不为
true ,则调用者应该忽略返回值。
|
转载于:https://blog.51cto.com/pz0513/112605