liucheng886 发表于 2010-01-08 23:23

JSTL入门:表达式(常用)


[*]EL 表达式的格式是这样的:用美元符号({ })中
[*]组合静态文本和多个 EL 表达式以指定动态属性值
  
[*]存取器       EL 提供了两种不同的存取器(点运算符(.)和方括号运算符([])),也支持通过         EL 操作特性和元素
[*]点运算符通常用于访问对象的特性:例如,在表达式 ${ user.firstName} 中,使用点运算符来访问 user 标识符所引用对象的名为 firstName 的特性。EL 使用 Java bean 约定访问对象特性,因此必须定义这个特性的 getter 方法(通常是名为 getFirstName() 的方法),以便表达式正确求值。当被访问的特性本身是对象时,可以递归地应用点运算符。例如,具有city属性的address对象是user对象的属性,,表达式 ${ user.address.city} 将会返回这个地址对象嵌套的 city 特性。
[*]方括号运算符用来检索数组和集合的元素。在数组和有序集合(也即,实现了 java.util.List 接口的集合)的情况下,把要检索的元素的下标放在方括号中。例如,表达式 ${ urls} 返回 urls 标识符所引用的数组或集合的第四个元素(和 Java 语言以及 JavaScript 中一样,EL 中的下标是从零开始的)。
[*]对于实现 java.util.Map 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${ commands["dir"]} 返回与 commands 标识符所引用的 Map 中的 "dir" 键相关联的值。
[*]点运算符和方括号运算符还可以互操作。例如,如果数组的元素本身是对象,则可以使用方括号运算符来检索该数组的元素,并结合点运算符来检索该元素的一个特性(例如 ${ urls.protocol})。
[*]点运算符和方括号运算符可能实现某种程度的互换。例如,也可以使用 ${ user["firstName"]} 来检索 user 对象的 firstName 特性,正如可以用 ${ commands.dir} 获取与 commands 映射中的 "dir" 键相关联的值一样。
[*]运算符      
算术运算符  +、-、*、/(或 div)和 %(或 mod)
关系运算符  ==(或 eq)、!=(或 ne)、(或 lt)、>(或 gt)、=(或 ge)
逻辑运算符  &&(或 and)、||(或 or)和 !(或 not)
验证运算符  empty
[*] 利用算术运算符的 EL 表达式
${item.price * (1 + taxRate)}
[*] 利用关系和逻辑运算符的 EL 表达式:关系运算符允许比较数字或文本数据。比较的结果作为布尔值返回
${(x >= min) && (x
[*]运算符 empty:验证数据,empty 运算符采用单个表达式作为其变量(也即,${ empty input}),并返回一个布尔值,该布尔值表示对表达式求值的结果是不是“空”值。求值结果为 null 的表达式被认为是空,即无元素的集合或数组。如果参数是对长度为零的 String 求值所得的结果,则 empty 运算符也将返回 true。
[*] EL 运算符优先级(自顶到底,从左到右)
[], .
()
unary -、not、!、empty
*、/、div、%、mod
+、binary -
() 、>、=、lt、gt、le、ge
==、!=、eq、ne
&&、and
||、or
[*]文字值:   在 EL 表达式中,数字、字符串、布尔值和 null 都可以被指定为文字值。字符串可以用单引号或双引号定界。布尔值被指定为 true 和 false。
[*]Taglib(伪指令):用于 JSTL core 库 EL 版本的 taglib 伪指令

[*]对应于 JSTL core 库的 taglib 伪指令有两种:
[*]用于 JSTL core 库 RT 版本的 taglib 伪指令
[*]变量标记:
JSTL 定制标记是操作: 操作提供基于标记的机制来创建和设置限制了作用域的变量,其中 var 属性指定了限制了作用域的变量的名称,scope 属性表明了该变量驻留在哪个作用域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。scope 属性是可选的,其缺省值是 page, 操作的语法
操作示例
通过主体内容指定操作的值
CST
操作是用来删除限制了作用域的变量的,它获取两个属性。var 属性指定待删除变量的名称,scope 属性是可选的,它表示待删除变量来自哪个作用域,缺省为 page.
输出:该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下, 将打印其值.
操作的语法
escapeXml 属性也是可选的。它控制当用标记输出诸如“”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成和 &)。
带缺省内容的操作示例 Hello
禁用转义的操作示例
合并和以提供缺省变量值
   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109937/showart_2144182.html
页: [1]
查看完整版本: JSTL入门:表达式(常用)