b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

el表达式_el表达式取值_el表达式三元运算符

电脑杂谈  发布时间:2016-12-29 17:04:25  来源:网络整理

其他使用EL的技术或许有其他的因素采用延迟求值表达式。

立即求值

所有使用${}语法的表达式都是立即求值表达式。这些表达式只能用于模板文本或者标签属性值只在程序刚刚呈现时用到。

下面这个例子展示了立即求值表达式引用属性值的标签,它用来获取会话范围中Bean名字为cart的价格合计值:

JSF实现了对表达式${sessionScope.cart.total}求值、转换并将返回值传递给标签处理程序。

立即求值表达式通常是只读型的值表达式。前面例子中的表达式只能读取cart Bean的总价格但无法设置这个值。

延迟求值

延迟求值表达式使用#{expr}格式,并且可以在已定义的其他生命周期阶段进行求值。在JSF的实际应用中,它的控制器可以在生命周期的不同阶段对表达式求值,这取决于页面中如何使用表达式

下面的例子展示了JSF中h:inputText标签,这个标签可以将用户的输入文本装在这个文本区域。h:inputText标签的值属性采用延迟求值表达式指向customerBean的name属性:

对于包含此标签的初始请求,JSF实现在页面响应时计算#{customer.name}的值。在这个阶段,表达式只访问customerBean中name的值,就像立即求值一样。

在回传阶段,当customerBean的值在request请求中被检索、验证以及传播期间,JSF实现表达式在生命周期不同阶段的求值。

从这个例子可以看出,延迟求值表达式可以:

n 值表达式可以对数据进行读和写操作

n 可以调用方法表达式

下一节我们详细解释值表达式(立即求值、延迟求值)和方法表达式。

3、值和方法表达式

EL定义了两种表达式:值表达式和方法表达式。值表达式既可以获取值也可以设置值。方法表达式用来实现对方法的引用,可以调用方法并返回值。

值表达式

值表达式进一步又分为右值表达式和左值表达式。右值表达式可以读取数据但不能写数据。左值表达式即可以读数据也可以写数据。

所有使用${}分隔符的表达式都是立即求值并且都是右值表达式。el表达式表达式的求值可以使用#{}分隔符进行延迟求值,#{}分隔符的表达式即可以是右值也可以是左值表达式。思考下面这两个表达式值:

${customer.name}

#{customer.name}

第一个使用立即求值语法,第二个使用延迟求值语法。前面的表达式访问获取name属性值,并由response在页面呈现。第二个表达式也会做同样的事,但标签处理程序会在生命周期中延迟一些时间来呈现(如果对应应用系统允许,符合工程师的研发目标)。

在JSF实际开发中,后面的标签表达式会在页面请求初始化后立即求值。这样,这个表达式就变成了右值表达式。在request回传阶段,表达式可以根据用户的输入为name属性赋值,这种情况下,它就变成了左值表达式。

使用值表达式引用对象

右值表达式和左值表达式可以引用以下对象的状态或属性:

n JavaBean组件

n Collections

n Java枚举类型

n 隐式对象

引用这些对象时,可以使用对象的名字变量编写表达式。下面是引用托管Bean customer的表达式:

${customer}

Web容器使用PageContext.findAttribute(String)查找并计算表达式的变量值,String的对象实例就是变量的名字。例如,当计算${customer}表达式值时,容器会在page、request、session和application等范围内查询customer对象并返回它的值。如果找不到customer,就会返回null。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23837-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...