zoukankan      html  css  js  c++  java
  • JSF>JSF Expression Language

    JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。 JSF EL是以#开始,将变量或表达式放置在{ 与 } 之间

    一、引用简单的对象属性

    <f:view>
        <h:outputText value="#{userBean.name}"/>
    </f:view>
    在JSF卷标的属性上," 与 " (或'与')之间如果含有EL,则会加以运算,您也可以这么使用它:
    ...
    <f:view>
     名称, 年龄:
     <h:outputText value="#{userBean.name}, #{userBean.age}" />
    </f:view>
    ...
    一个执行的结果可能是这样显示的:

    名称, 年龄:Justin, 29

    二、访问复杂属性(Map、Collec­tion和数组)

    对于Map型态对象,我们可以使用 '.' 运算子指定key值来取出对应的value,也可以使用 [ 与 ] 来指定

    <h:outputText value="#{param['name']}"/>

    如果变量是List型态或数组的话,则可以在 [] 中指定索引

    <h:outputText value="#{someBean.someList[0]}"/>    
    
    <h:outputText value="#{someBean.someArray[1]}"/> 
    

    三、使用EL来作为逻辑和数值语句,并且在表达式中混合使用字面值。

    您也可以指定字面常数,对于true、false、字符串、数字,JSF EL会尝试进行转换

    <h:outputText value="#{true}"/>
    
    <h:outputText value="#{'This is a test'}"/>
    

    如果要输出字符串,必须以单引号 ' 或双自变量 " 括住,如此才不会被认为是变量名称。在宣告变量名称时,要留意不可与JSF的保留字或关键词同名,例如不可取以下这些名称:

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

    使用EL,您可以直接实行一些算术运算、逻辑运算与关系运算,其使用就如同在一般常见的程序语言中之运算。算术运算子有:加法 (+), 减法 (-), 乘法 (*), 除法 (/ or div) 与余除 (% or mod) 。

    四、方法绑定表达式

    当使用EL来引用bean方法时,则称之为方法绑定表达式(method-binding expression)。方法绑定表达式,如"#{myBean.methodName}",用来将监听器方法或验证器方法关联至组件。

    五、EL的变量名也可以程序执行过程中所宣告的名称,或是JSF EL预设的隐含对象,

    JSF所提供的隐含对象,大致上对应于JSP隐藏对象,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于javax.faces.context.FacesContext与javax.faces.component.UIViewRoot例如下面的程序使用param隐含对象来取得使用者输入的参数:

    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
    <%@ tagliburi="http://java.sun.com/jsf/html" prefix="h" %> 
    <%@pagecontentType="text/html; charset=Big5"%>
    <html>
     <head>
      <title></title>
     </head>
     <body>
      <f:view>
       <b>
        您好,
        <h:outputText value="#{param.name}" />
       </b>
      </f:view>
     </body>
    </html>

    JSF EL支持访问常用对象的隐含变量。它们中大多数同时也被JSP 2.0 EL所支持

     

    隐含变量

     

    说    明

     

    实    例

    JSP 2.0 EL是否支持?

     

    applicationScope

    应用作用域变量的Map,以名称作为关键字

    #{applicationScope.myVariable}

     

     

    cookie

    一个当前请求的cookie值的Map,以cookie名称作为关键字

    #{cookie.myCookie}

     

     

    facesContext

    当前请求的FacesContext 实例

    #{facesContext}

     

     

    header

    当前请求的HTTP首部值的 Map,以header名称作为关键字。如果给定的header 名称有多个值,仅返回第1个值

    #{header['User-Agent']}

     

     

    headerValues

    当前请求的HTTP首部值的 Map,以header名称作为关键字。对每个关键字,返回一个String数组(以便所有的值都能访问)

     

    #{headerValues

    ['Accept-Encoding'][3]}

     

     

    initParam

    应用初始化参数的Map,以参数名称为关键字。(也称为servlet 上下文初始化参数,在部署描述符中设置)

     

    #{initParam.adminEmail}

     

     

    param

    请求参数的Map,以header 名称作为关键字。如果对给定的参数名称有多个值,仅返回第1个值

     

    #{param.address}

     

     

    paramValues

    请求参数的Map,以header 名称作为关键字。对每个关键字,返回一个String数组(以便可以访问所有的值)

     

    #{param.address[2]}

     

     

    requestScope

    请求范围内的变量的Map,以名称作为关键字

    #{requestScope.user-Preferences}

     

     

    sessionScope

    会话范围内的变量的Map,以名称作为关键字

    #{sessionScope['user']}

     

    view

    当前视图

    #{view.locale}

     

    有两个变量是针对JSF的:facesContext和view。FacesContext实例代表当前正在处理的请求。它持有对当前应用消息栈、当前呈现包和其他一些有用对象的引用。对前端开发来说,view具有一些有用的属性:viewId、renderKitId和locale。

     

     

  • 相关阅读:
    list()
    Python 数据类型转换
    设计模式 — 代理模式(静态代理、动态代理、Cglib代理) 转载
    java线程池实现原理
    HashMap深度解析(转载) jdk1.7
    Java Serializable 序列化和反序列化 (转载)
    Java遍历HashMap并修改(remove)(转载)
    Java中的break,continue关于标签的用法(转载)
    遍历List过程中删除操作报java.util.ConcurrentModificationException错误
    java Date时间的各种转换方式和Mysql存时间类型字段的分析
  • 原文地址:https://www.cnblogs.com/xqzt/p/5637342.html
Copyright © 2011-2022 走看看