SpringMVC学习之EL表达式一

1.语法:

EL表达式是以 ${ 开头,以 } 结束的的.例如 : ${expression}。常用来连接两个表达式,对于一系列的表达式,取值将从左到右,结果的类型为String并且连接在一起,如:a+b=8,c+d=10,${a+b}${c+d}输出的结果是810;

若在定制标签的属性值中使用EL表达式,该表达式的值结果将强制转为该属性需要的类型,如下:

PS:只要是 ${ 则表示一个EL表达式,如果只是作为一般的字符串,就在文本前加转义字符,如:/${

2.关键字,不能用来作标识符

and   eq  gt  true  instanceof  or  ne  le  false  empty  not  lt  ge   null   div  mod 

3.[ ] 和 . 运算符

EL可以返回任意类型的值,若EL表达式的结果带属性的对象,可以用 [ ]. 来访问属性,如下:

${object["id"]} ${object.id} 属性为对象,可以再加一个 ${object.object1.id}

访问JavaBean,利用[ ]. 可以访问bean的属性 ${bean.id}${bean["id"]}

4.取值规则

EL的表达式的取值是从左到右的,对于expr-a[expr-b]

1)先计算expr-a 得到value-a

2)如果value-a为null,则返回null

3)计算expr-b得value-b

4)如果value-b为null,则返回null

5)如果value-a为java.util.Map,,则会查看value-b是否为Map中的一个key,若不是则返回null

6)若value-a为java.util.List或者是一个array则:

a:强制value-b为int,若强制失败,则抛出异常

b:如果value-a.get(value-b)抛出IndexOutOfBounds 或 Array.get(value-a,value-b)抛出ArrayIndexOutOfBound则返回null

c:否则,若value-a为List,则返回value-a.get(value-b) ,若value-b 为Array,则返回Array.get(value-a,value-b)

7) 若不是Map,List,Array,则value-a必定为JavaBean,则value-b必须强制为String. ( 若value-b是value-a的可读属性,则调用getter,若getter异常,则表达式无效,否则该表达式有效)

你可能感兴趣的:(SpringMVC,study)