EL表达式语法

上传人:c** 文档编号:291144699 上传时间:2022-05-11 格式:DOCX 页数:6 大小:18.57KB
返回 下载 相关 举报
EL表达式语法_第1页
第1页 / 共6页
EL表达式语法_第2页
第2页 / 共6页
EL表达式语法_第3页
第3页 / 共6页
EL表达式语法_第4页
第4页 / 共6页
EL表达式语法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《EL表达式语法》由会员分享,可在线阅读,更多相关《EL表达式语法(6页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑EL表达式语法 ExpressionLanguage 2.1 Specification 注:此文档由mErcy翻译JSP2.1EL模范而来,转载请声明出处,不得用于商业性质。 1.1 EL表达式: EL表达式规定为:eval-expression和 literal-expression,同时EL表达式支持Compositeexpressions,好多EL表达式(eval-expressions和 literal-expressions)被聚合在一起。 EL表达式被解析成数值表达式和方法表达式。其中,取值表达式去引用一个值,而方法表达式那么是关联一个方法。一

2、旦被解析之后,表达式能够被优化地计算一次或屡屡。 下面我们来分为:eval-expression、literal-expression、Compositeexpressions来陈述 1.1.1Eval-expression Eval-expression是以使用$expr或者#expr布局的形式构成。两种方式都是一致的方式,能很好被解析和计算,尽管它们在使用时有着不同的意义从技术方面来说。 从J2EE层模范协定来说,$expr布局是直接计算而#expr布局那么是延期计算,这种界定符号指出了在J2EE层两种表达式类型的语义上面的识别。#expr这种界定符号被称为延迟计算是由于直到系统需要的时候

3、才计算。而$expr这种界定符号那么是在JSP页面编译的时候就计算,就是为什么叫做直接计算的理由。 1.1.1.1作为取值表达式的计算表达式 当解析成一个取值表达式的时候,eval-expression能被计算成左值和右值。若在EL中有等号操作符号展现,右值是类型展现在等号的右边的表达式,左值同理。 右值譬如: 以下面这个例子为例: 当表单被提交的时候,在申请计算的阶段,Faces计算EL表达式#checkOutFormBean.validateEmail作为一个数据接口的引用,这个数据布局的数值是被一个表单相关联的输入参数设置。因此,表达式的结果表现成一个数据布局的引用,或者为一个左值。 在

4、翻译阶段,那个一致的表达式被计算,它产生特殊值关联右值对象,作为JSP实例。 一个左值合法语法是右值合法语法的子集。在特殊处境,一个左值只能由单个变量(譬如$name)或者一个从某个对象中解析属性的组成,通过. 或 操作符(譬如 $employee.name 在解析取值表达式时,一个预期的类型是被供给的。拿右值为例,预期的类型是表达式计算被强制的结果。以左值为例,预期的类型是被疏忽的,并且在属性被设置之前,供给的值是被强制为一个表达式指向实际的属性类型。在后面供给了类型转换 1.1.1.2作为方法表达式的计算表达式 在某种处境,计算表达式会描述成引用一个方法而不是模型对象。 譬如,在JSF中,

5、组建标记也供给了引用方法的属性的集合,这些方法能够执行特定为组建标签关联的函数。为了支持这些类型的表达式,EL定义了方法表达式(ELclass MethodExpresssion) 以上面的例子,validator属性使用了关联方法表达式类型的表达式。做为一个取值表达式,表达式的计算(调用函数)被延期并且在生命周期内的合理的瞬间能够被底层的技术处理。 方法表达共享一致的左值语法,它只能由单个变量(譬如$name)或者一个从某个对象中解析属性的组成,通过. 或 操作符(譬如$employee.name)。关于预期返回值类型和参数类型的信息供给在方法被解析的时候。 方法表达式被计算在其引用的方法的

6、调用时候或者获取引用的方法信息。计算之上,ELAPI 验证方法务必一致于预期方法的签名在解析时候。因此,没有方法表达式的强制 1.1.2字面表达式 一个字面表达式不使用$expr或者#expr布局并且简朴地计算String类型文本表达式。在EL上,一个预期某个类型不止供给String。譬如: 表达式:Aloha!类型:String 结果:Aloha! true Boolean Boolean.True 为了生成字面值包括字符串或者,开发人员能够选择使用组合表达式譬如下面: $exprA #exprB,这里结果是$exprA和#exprB。 两者选一个,使用转义字符$和 #能够被用于转义,否那么

7、,会被处理为取值表达式。 $exprA #exprB,这里结果是$exprA和#exprB。 字符表达式能够用在任何取值表达式使用的地方。一个字符表达式也能使用一个务必要有返回值的方法。若他们的返回值不是String类型,他们会强制类型转换。 1.1.3.组合表达式: 在多个EL表达式被组合一起的地方,EL也支持组合表达式。取值表达式从左到右北计算,强制成String类型,并且连接任何一个插入字面表达式。 举个例子,组合表达式 是由三个EL表达式组合而成,取值表达式irstName、,表达式。 一旦EL计算,结果会按照EL类型转换规矩把从预期的类型强制成String类型。 混合$和#的布局在组

8、合表达式中是非法的。这种限制的导入是为了制止用户想要使$expr还是#expr指令来计算表达式的含混不清。举个例子,前面我们提到了,$是直接计算并且#是延迟计算在J2EEweb层模范的协定中,这就意味这EL表达式在J2EEweb层,开发人员不能强制直接计算那些组合表达式和间接计算的其余片面。这种限定可能会在未来的版本中回取消,从而为更高级的EL应用模式得到允许。 组合表达式能够在任何EL表达式除了方法表达式之外的地方使用。仅仅单个取值表达式中能解析方法表达式。 1.1.4.语法约束 取值表达式精确地被解析和被计算,在底层的技术导入约束,在EL表达式展现时,语法在使用遵循这些约束。 譬如,在JS

9、P2.1,#表达式都只能使标签属性采纳延迟表达式才被允许,若使用#在其他的地发挥报错误。 1.2. 字面值 有一些字面值作为boolean,integer,floatingpoint,string和null类型在取值表达之中。 Boolean true 和 false Integer - 参看integerLiteral Floating point -参看FloayPointLiteral String - 单引号和双引号 转义成 , 转义成 和 转义成。引号只是需要需要转义在string封装值在一致的引号类型。 1.3. 错误,警告、默认值 表达式语言已经被设计出来作为web表示层应用程序。在使用时,阅历建议最重要的是能够供给尽可能好的表述来设计,甚至在页面中有的一点错误。为了达成这个需求,EL不供给警告,只是供给默认值和错误。默认值都是类型正确的值,这些值被子表达式赋值当有问题时候。一个错误是奇怪的抛出(通过EL使用的环境来处理奇怪)。 1.4.解析模型对象和他们的属性 一个核心的概念在EL中,就是计算模型对象名称到一个对象,并且在一个表达式中分开属性应用于对象(操作符. 和 )。 6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号