EL表达式语法(3)

2019-07-30 13:23

?

?

o

?

?

o

1.7.2 A { o

o

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

gDecemial类型,然后: ?

(B)

?

(B) o

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

uble类型并且申请操作符 o

后: ?

(B)

若操作符为 == 或者 eq , 返回 A.equals

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

若操作符为 != 或者 eq , 返回 !A.equals若操作符为 == 或者 eq , 返回 A.equals

否则,报错误

否则利用B.compareTo(A)结果 若B.compareTo(A)抛出异常,错误。

若B属于Comparable类型,那么:

否则利用A.compareTo(B)结果 若A.compareTo(B)抛出异常,错误。

== ,!=, eq , ne } B

若 A == B,申请操作

?

(B) o

若操作符为 != 或者 eq , 返回 !A.equals

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

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

o

号。 o

o

?

若 A 或 B 属于 Boolean,都强制成Boolean,并且申请符

若 A 或 B 属于 enum,都强制成enum,并且申请符号。

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

否则,如果当调用A.equals(B)产生错误,则报错误。

?

否则,申请符号,并且使用A.equals(B)的结果

1.8.逻辑操作符

逻辑操作符有: && 和 and || 和 or ! 和 not

计算逻辑操作符的说明在下面章节中:

1.8.1 二元操作符- A {&& , ||,and,or} B

A 和 B强制成Boolean,申请符号

操作符停止计算,能够由表达式来决定,比如:Aand B and C and C 如果B等于false,然后只有 A和 B 计算。

1.8.2 一元操作符{! ,not } A:

A强制成Boolean,申请操作符

1.9 空值操作符-empty A

空值操作符是一种前缀操作符,他被使用决定于一个值是否空或者null。 计算空值 A: ?

若 A 等于 null,返回true ?

否则如果 A 是空String,返回 true

? 否则如果 A 是空array,返回 true

? 否则如果 A 是空Map,返回 true

? 否则如果 A 是空Collection,返回 true

? 否则返回 false

1.10.条件操作符A ? B: C

计算 B或 C,结果依赖于A的计算 强制成Boolean:

若 A等于 true,计算结果为B 若 A等于 false,计算结果为C

1.11.括号操作符

括号操作符能够改变计算的优先级,比如:${a*(b+c)}(先计算b+c)

1.12.操作符优先级

[] . ()

- not ! empty (一元操作符) * / div % mod + - (二元操作符) < > <= >= lt gtle ge == != eq ne && and || or ? :

带有参数合理的函数拥有的优先级超过符号的优先级。因此,表达式${c?b:f()},是一个非法的,因为b:f()被解析成一个合理的函数而不是作为一个条件表达式。通常,()操作符能被用作确定优先级,比如:${c? b :(f()) }

1.13.保留字:

下列的语言保留字不能由做法标识符:

and eq gt true instanceof or ne le false empty

not lt ge null div mod

注:这些中的很多保留字没有用到语言中,但是他们可能会在未来中使用,所以开发人员必须避免使用这些(保留)字

1.14.函数:

EL有些限定的函数,重用XML命名空间(和属性)限定,XSL函数,和JSP自定义动作等概念。函数都映射到publicstatic 方法在Java类中。

限定n个数组函数完全语法: [ns:]f([a1[,a2[,...[,an]]]])

ns是命名空间的前缀,f是函数的名字,a是函数的参数。

EL函数被映射,解析和绑定在解析的时候。它是由FunctionMapper类负责提供映射命名空间限定函数,这个函数使用有特殊的类的static方法在表达式创造。若没有FunctionMapper类被提供,函数会失效。

1.15.变量:

就像FunctionMapper为EL表达式中添加函数那样提供一种灵活的机制,VariableMapper为支持EL变量的概念提供一种灵活的机制。一个EL变量不是直接引用一个模型变量而能够通过ELResolver类被解析出来之后引用,而不是EL变量引用一个EL表达式。EL表达式的计算产生关联一个EL表达式数值。

EL变量被映射,解析和绑定在解析的时候。它是由VariableMapper类负责提供EL变量映射到ValueExpressions当表达式创建时。若没有VariableMapper类被提供,函数会失效。 参看 javax.el包中的描述更多细节。

1.16.枚举:

统一EL支持JavaSE5中的枚举类型。强制规则包括处理枚举类型在下面的章节中。同时,引用在EL表达式中枚举类型实例化对象的值,通过下面的强制转化规则使用字面值字符串去强制执行。比如,我们说,我们有一个枚举类型叫做Suit,它有成员Heart,Diamond,Club,和Spade。并且,我们说,我们有一个引用在EL表达式中,mySuit,就是Spade。如果你想要去测试枚举Spade相等性,你能说${mySuit== Enum.valueOf(Suit.class,'Spade')。

1.17.类型转换:

每个表达式被计算在预料类型的上下文中。表达式计算结果可能不会精确地匹配预料的类型,所以应用规则描述在下面章节。 1.17.1强制?

X值转化成类型Y:

若X是原始(原生)类型,那么让X等于X的包装类型。否则,让X不变。

? 若Y是原始(原生)类型,那么让Y等于Y的包装类型。否则,让Y不变。

? 应用下面的章节中强制转化X成Y。

?

错。

若Y是原始(原生)类型,那么结果被拆包强制结果找到。若强制结果是null,那么报

?

若Y不是原始(原生)类型,结果就是强制结果。

比如;如果强制int类型成String类型,那么包装int类型成Integer类型并且利用这个规则强制Integer类型成String类型。或者如果强制String成一个Double,应用规则强制String类型成Double类型,确定结果Double不是null。

1.7.2强制A成String类型

o

o

o

o

o

如果A是String类型,则返回A

否则,若A等于null,则返回\

否则,若A是枚举类型,则返回A.name()

否则,若A.toString()抛出throws一个异常,错误

否则,返回A.toString()

1.7.3强制A成Number类型N

?

?

若A属于Character类型,转化A成new Short((short)a.c

harValue()),并且应用以下规则。 ?

?

?

?

?

?

?

?

若A属于BigDecimal类型,返回new

BigDecimal (A) ?

doubleValue())

否则,返回new BigDecimal(A.

若N属于BigDecimal类型,

否则,返回BigInteger.valueOf(A.longValue()) 若A是一个BigDecimal,则返回A.toBigInteger()

若N属于BigInteger类型,

若A属于Numner类型,安静地强制成Number类型利用下面的算法: 若A属于Numner类型,则直接返回A 若A属于Boolean类型,则报错

若A等于null或 \,返回0.


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

下一篇:证券考试题目

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

马上注册会员

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