EL表达式语法(2)

2019-07-30 13:23

EL API提供一个一般化机制,解析器,通过底层技术实现并且定义了规则,它管理模型对象名称的解析和他们关联属性。

1.5. 操作符[]和 .

EL遵照的ECMAScript来统一处理.和 [] 操作符

expr-a.identifier-b 等于expr-a[\验证器 identifier-b被用于构造一个字面的值作为一个验证器。

计算expr-a[expr-b]:

?

计算expr-a的值放到value-a。

?

若vaule-a等于null:

如果expr-a[expr-b]作为末尾的一个属性被解析:

若表达式一个值表达式并且ValueExpression.getValue(context)被调用 ,作为初始化表达式计算,返回null。

否则,抛出PropertyNotFoundException的异常.(尝试着去分离引用null 作为左值) 否则,返回null ?

计算expr-b的值放到value-b

若value-b等于null; o

?

若表达式是一个取值表达式并且ValueExpression.getValue

(context)方法被调用去初始化表达式的计算,返回null。 ?

?

否则返回一个null

否则,抛出一个PropertyNotFoundException.

如果expr-a[expr-b]作为末尾的一个属性被解析:

?

?

若表达式是一个取值表达式:

?

?

若ValueExpression.getValue(context)方法被调用去初始化表达

式的计算,则调用elResolver.getValue(context.value-a,value-b)方法。 ?

若ValueExpression.getType(context)方法被调用,调用elResolv

er.getType(context,value-a,value-b)方法。 ?

若ValueExpression.isReadOnly(context)方法被调用,则调用el

Resolver.isReadOnly(context,value-a,value-b)方法。 ?

若ValueExpression.setValue(context,val)被调用,则调用elResol

ver.setValue(context,value-a,value-b,val)方法。 ?

否则,调用elResolver.getValue(value-a,value-b)。 如果expr-a[expr-b]作为末尾的一个属性被解析:

? 否则,表达式则是一个方法表达式: o

?

?

在解析时,寻找对象vaule-a上的value-b方法和提供预想的方法参数类

型集合。如果不存在这些,或者返回的类型不能匹配预想的回返类型(即方法签名不同),则抛出一MethodNotFoundException。 ?

若MethodExpression.invoke(context,params)被调用,则通过传递过来参

数来调用相应的方法。 ?

若MethidExpression.getMethodInfo(context)被调用,构建和返回一个Me

thodInfo对象。 o

否则,调用elResolver.getValue(value-a,value-b)。

强制value-b转化成String。

若expr-a[expr-b]作为末尾的一个属性被解析:

1.6算术操作符号:

算术操作只被在Integer(BigInteger和Long)类型和浮点(BigDecimal和双精度型)值.有五个操作符: 加法:+ 减法:- 乘法:* 除法:/and div 求余:%and mod

算术操作符的计算在下面的章节中描述。A和B作为计算的字表达式。 1.6.1 ?

二元操作符- A {+ ,-,*} B

若 A 和 B 都是null,则返回(Long)0

?

若 A 或 B 属于BigDecimal类型,或者都是,那么: o

o

o

?

若 A 或 B 属于 Float, Double,或者包含 String,e或则E, o

用操作符 o

?

若 A 或 B 属于 BigInteger类型,强制他们成为BigInteger类型,然后: o

o

o

若操作符为*,返回a.multiply(b) 若操作符为-,返回a.subtract(b) 若操作符为+,返回a.add(b)

否则,A和B强制成Double类型并且申请操作符

若A或B属于BigInteger类型,把A和B强制转化成BigDecimal类型并且应若操作符为*,返回a.multiply(b) 若操作符为-,返回a.subtract(b) 若操作符为+,返回a.add(b)

?

否侧,把A和B强制成Integer,并且应用符操作符。 ?

若操作符产生异常,那么报错误。

1.6.2 二元操作符- A {/,div} B

?

若 A 和 B 都是null,则返回(Long)0 ?

若A 或 B 一个属于BigDecimal或 一个属于BigInteger,都强制成BigDecimal并且返回A.divde(B,BigDecimal.ROUND_HALF_UP)。 ?

否则,A和B都强制成为Double类型并且申请操作符 ? 1.6.3 ?

若操作符产生异常,那么报错误。

二元操作符- A {% ,mod} B

若 A 和 B 都是null,则返回(Long)0

?

若 A 或 B 属于 Float, Double,或者包含 String。e或则E,都强制成Double并且申请操作符。 ?

若 A 或 B 属于 BigInteger类型,都强制成BigInteger返回A.remainer(B)。 ?

否则强制成Long并且申请操作符。 ? 1.6.4 ?

若操作符产生异常,那么报错误。

一元操作符 -A

若 A 是null,则返回(Long)0

?

若 A 属于 BigDecimal类型或则 BigInteger类型,或则A.negate()。 ?

若 A 是String类型: o

o

o

操作符产生异常,那么报错误。 否则强制成Long类型并申请操作符

若A 含有e或E,强制成Double类型并申请操作符

? 若 A属于 Byte,Short,Integer,Long,Float,Double o

o

若操作符产生异常,那么报错误。 保留原类型,并且申请操作符

? 否则,报错误

1.7 关系操作符

== 和 eq != 和 ne < 和 lt > 和 gt <= 和 le <= 和 ge

后面四种第二的版本符号提供使用是为了避免在XML语法中中使用实体引用和含有相同的行为,比如<行为 与 lt一样,以此类推。 1.7.1 o

e。 o

o

若 A 或B 属于 BigDecemial类型,他们都会强制

转化成BigDecemial类型,并且使用A.compareTo(B)方法的返回值作为返回值。 o

若 A 或 B 属于 Float 或 Double 都强制成为Do

uble类型并且申请操作符 o

若 A 或 B 属于 BigInteger,都强制成BigInteger

类型并且使用A.compareTo(B)方法的返回值作为返回值。 o

若 A 或 B 属于 Byte,Short,Character,Integer,

或者Long等类型都强制成为Long类型并且申请操作符。 o

o

若A属于Comparable类型,那么:

若 A 或 B 属于字符型强制成String类型,比较字符: 若 A 或 B 是 null,return false

A { <, > <= , >= , lt , gt , le , ge } B

若 A == B , 若 <= , le , >= 或者 ge 返回 tru


EL表达式语法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:证券考试题目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: