`

struts OGNL(转载)

 
阅读更多
Struts2使用之值栈与OGNL-使用
    访问属性

    名字属性获取 :<s:property value="user.username"/><br>

    地址属性获取 :<s:property value="user.address.addr"/><br>
    访问方法

    调用值栈中对象的普通方法: <s:property value="user.get()"/><br>
    访问静态属性和方法

    调用 Action 中的静态方法: <s:property value="@struts.action.LoginAction@get()"/>

    调用 JDK 中的类的静态方法: <s:property value="@java.lang.Math@floor(44.56)"/><br>

    调用 JDK 中的类的静态方法 ( 同上 ) : <s:property value="@@floor(44.56)"/><br>

    调用 JDK 中的类的静态方法: <s:property value="@java.util.Calendar@getInstance()"/><br>

    调用普通类中的静态属性: <s:property value="@struts.vo.Address@TIPS"/><br>
    访问构造方法

    调用普通类的构造方法 :<s:property value="new struts.vo.Student(' 王老吉 ' , ' 爱国饮料 ' , 3 , 99).username"/>

    
    1.5. 访问数组

    获取 List:<s:property value="testList"/><br>

    获取 List 中的某一个元素 ( 可以使用类似于数组中的下标获取 List 中的内容 ):

    <s:property value="testList[0]"/><br>

    获取 Set:<s:property value="testSet"/><br>

    获取 Set 中的某一个元素 (Set 由于没有顺序,所以不能使用下标获取数据 ):

    <s:property value="testSet[0]"/><br> ×

    获取 Map:<s:property value="testMap"/><br>

    获取 Map 中所有的键 :<s:property value="testMap.keys"/><br>

    获取 Map 中所有的值 :<s:property value="testMap.values"/><br>

    获取 Map 中的某一个元素 ( 可以使用类似于数组中的下标获取 List 中的内容 ):

    <s:property value="testMap['m1']"/><br>

    获取 List 的大小 :<s:property value="testSet.size"/><br>

    
    访问集合 – 投影、选择 (? ^ $)

    利用选择获取 List 中成绩及格的对象 :<s:property value="stus.{?#this.grade>=60}"/><br>

    利用选择获取 List 中成绩及格的对象的 username:

    <s:property value="stus.{?#this.grade>=60}.{username}"/><br>

    利用选择获取 List 中成绩及格的第一个对象的 username:

    <s:property value="stus.{?#this.grade>=60}.{username}[0]"/><br>

    利用选择获取 List 中成绩及格的第一个对象的 username:

    <s:property value="stus.{^#this.grade>=60}.{username}"/><br>

    利用选择获取 List 中成绩及格的最后一个对象的 username:

    <s:property value="stus.{$#this.grade>=60}.{username}"/><br>

    利用选择获取 List 中成绩及格的第一个对象然后求大小 :

    <s:property value="stus.{^#this.grade>=600}.{username}.size"/><br>
    集合的伪属性

    OGNL 能够引用集合的一些特殊的属性 , 这些属性并不是 JavaBeans 模式 , 例如 size(),length() 等等 . 当表达式引用这些属性时 ,OGNL 会调用相应的方法 , 这就是伪属性 .

    集合
   

    伪属性

    Collection(inherited by Map, List & Set)
   

    size ,isEmpty

    List
   

    iterator

    Map
   

    keys , values

    Set
   

    iterator

    Iterator
   

    next , hasNext

    Enumeration
   

    next , hasNext , nextElement , hasMoreElements

    
      Lambda   :[…]

    格式: :[…]

    使用 Lambda 表达式计算阶乘 :

    <s:property value="#f = :[#this==1?1:#this*#f(#this-1)] , #f(4)"/><br>
    OGNL 中 # 的使用

    # 可以取出堆栈上下文中的存放的对象 .

    名称
   

    作用
   

    例子

    parameters
   

    包含当前 HTTP 请求参数的 Map
   

    #parameters.id[0] 作用相当于

    request.getParameter("id")

    request
   

    包含当前 HttpServletRequest 的属性( attribute) 的 Map
   

    #request.userName 相当于

    request.getAttribute("userName")

    session
   

    包含当前 HttpSession 的属性( attribute )的 Map
   

    #session.userName 相当于

    session.getAttribute("userName")

    application
   

    包含当前应用的 ServletContext 的属性( attribute )的 Map
   

    #application.userName 相当于
    application.getAttribute("userName")

    attr   

    用于按 request > session > application 顺序访问其属性( attribute )    

    获取 Paraments 对象的属性: <s:property value="#parameters.username"/>
    OGNL 中 % 的使用

    用 %{} 可以取出存在值堆栈中的 Action 对象 , 直接调用它的方法 .

    例如你的 Action 如果继承了 ActionSupport . 那么在页面标签中,用 %{getText('key')} 的方式可以拿出国际化信息 .

      OGNL 中 $ 的使用

    “ $ ”有两个主要的用途

    l          用于在国际化资源文件中,引用 OGNL 表达式

    l          在 Struts 2 配置文件中,引用 OGNL 表达式
      值栈

    ValueStack 对象。这个对象贯穿整个 Action 的生命周期(每个 Action 类的对象实例会拥有一个 ValueStack 对象)。当 Struts 2 接收到一个 .action 的请求后,会先建立 Action 类的对象实例,但并不会调用 Action 方法,而是先将 Action 类的相应属性放到 ValueStack 对象的顶层节点( ValueStack 对象相当于一个栈)。

    在 Action 中获得 ValueStack 对象: ActionContext.getContext().getValueStack()

    l          Top 语法

    使用 Top 获取值栈中的第二个对象 :<s:property value="[1].top. 对象 "/>

    l          N 语法

    使用 N 获取值栈中的第二个对象 :<s:property value="[1]. 对象 "/>

    l          @ 语法

    调用 action 中的静态方法: <s:property value="@vs1@ 静态方法 "/> vs :值栈 1 :表示第一个。
分享到:
评论

相关推荐

    struts2中的OGNL的源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    struts2 ognl用法项目

    在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...

    struts2 ognl的用法

    ### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...

    Struts2_OGNL

    OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...

    struts ognl

    Struts OGNL详解 Struts 2框架是基于MVC设计模式的Java Web开发框架,而OGNL(Object-Graph Navigation Language)是Struts 2中的表达式语言,用于在Action类和视图之间传递数据。这篇博客将深入探讨Struts OGNL的...

    Struts2 ognl中的#、%和$符号用法说明

    在Struts2中,OGNL(Object-Graph Navigation Language)是默认表达式语言,用于访问和操作对象的属性。在OGNL表达式中,`#`、`%`和``$`符号扮演着不同的角色,它们是OGNL语法的重要组成部分。下面将详细介绍这三个...

    Struts2 ognl

    Struts2 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它在Struts2框架中扮演着核心角色,用于数据绑定、控制流程以及动态方法调用。这篇博文可能详细介绍了Struts2框架中OGNL的使用、工作原理...

    Struts2 使用OGNL表达式

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于数据绑定和表示层的数据交换。这篇博客文章可能详细探讨了如何在Struts2中使用OGNL来传递和操作数据。 OGNL是Struts2的核心...

    Struts2核心包ognl-2的源代码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的一个关键组件,它是一种强大的表达式语言,用于在运行时访问和操作对象的属性。这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作...

    struts2 ognl源码

    OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于在Action对象和视图之间传递数据。在这个主题中,我们将深入探讨Struts2 OGNL2.6.11的源码,了解其内部工作原理和关键功能。 首先,...

    Struts2之Ognl详解案例TextOgnl

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...

    struts2 OGNL表达式

    Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...

    struts2_OGNL Demo

    Struts2_OGNL Demo 是一个用于演示Struts2框架中OGNL(Object-Graph Navigation Language)表达式语言的实例。这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的...

    ognl.rar_OGNL API_struts2 ognl api_struts2帮助文档

    OGNL(Object-Graph Navigation Language)是Struts2框架中重要的表达式语言,它用于在应用程序中进行数据绑定和表达式求值。这篇文档将详细解释OGNL API及其在Struts2框架中的应用。 首先,OGNL是一个强大的、动态...

    struts2 ognl表达式

    Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...

    struts2 标签 OGNL

    Struts2是一个流行的Java web框架,它利用OGNL(Object-Graph Navigation Language)作为其核心表达式语言。OGNL是一种强大的表达式语言,允许开发者在Java对象之间导航和操作数据。在Struts2中,OGNL被广泛用于访问...

    Struts2 OGNL标签详解析实例

    Struts2 OGNL---标签详解析 都有实例 适合初学者

    struts2.0中的ognl

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象属性,它在Struts2的核心组件中扮演着至关重要的角色。本篇文章将深入探讨OGNL在Struts2.0中的应用及其重要性。 ...

    Struts2 OGNL示例(Maven项目)

    这个"Struts2 OGNL示例(Maven项目)"提供了使用OGNL与Struts2集成的实例,帮助开发者更好地理解和应用这一强大的特性。 首先,让我们了解什么是OGNL。OGNL是一种强大的表达式语言,允许我们访问和修改对象图中的...

Global site tag (gtag.js) - Google Analytics