`

Struts2之OGNL

 
阅读更多

 

在 JSP 页面上可以可以利用 OGNL(Object-Graph Navigation Language: 对象-图导航语言) 访问到值栈(ValueStack) 里的对象属性.

若希望访问值栈中 ContextMap 中的数据, 需要给 OGNL 表达式加上一个前缀字符 #. 如果没有前缀字符 #, 搜索将在 ObjectStack 里进行. 

 

property 标签



 

 

Struts 的 property 标签用来输出值栈中的一个属性值. 

 

读取 ObjectStack 里的对象的属性

 

若想访问 Object Stack 里的某个对象的属性. 可以使用以下几种形式之一: 

object.propertyName

object['propertyName']

object["propertyName"]

 

ObjectStack里的对象可以通过一个从零开始的下标来引用. 

 

ObjectStack 里的栈顶对象可以用 [0] 来引用, 它下面的那个对象可以用 [1] 引用. 若希望返回栈顶对象的 message 属性值:  [0].message 或 [0][“message”] 或 [0][‘message’]

若在指定的对象里没有找到指定的属性, 则到指定对象的下一个对象里继续搜索. 即 [n] 的含义是从第 n 个开始搜索, 而不是只搜索第 n 个对象.若从栈顶对象开始搜索, 则可以省略下标部分

 

读取 Context Map 里的对象的属性

 

若想访问 ContextMap 里的某个对象的属性, 可以使用以下几种形式之一: 

 

#object.propertyName

#object['propertyName']

#object["propertyName"]

 

示例:

返回 session 中的 code 属性: #session.code

返回 request 中的 customer 属性的 name 属性值: #request.customer.name

返回域对象(按 request, session, application 的顺序)的 lastAccessDate 属性: #attr.lastAccessDate

 

调用字段和方法

 

可以利用 OGNL 调用任何一个 Java 类里的静态字段或方法.

 

被压入到 ValueStack 栈的对象上的公共字段和方法. 

默认情况下, Struts2 不允许调用任意 Java 类静态方法,  需要重新设置 struts.ognl.allowStaticMethodAccess 标记变量的值为 true. 

 

调用静态字段或方法需要使用如下所示的语法:

@fullyQualifiedClassName@fieldName: @java.util.Calendar@DECEMBER

@fullyQualifiedClassName@methodName(argumentList): @app4.Util@now()

 

调用一个实例字段或方法的语法, 其中 object 是 Object Stack 栈里的某个对象的引用:

.object.fieldName: [0].datePattern

.object.methodName(argumentList): [0].repeat(3, “Hello”);

 

访问数组类型的属性

 

有些属性将返回一个对象数组而不是单个对象, 可以像读取任何其他对象属性那样读取它们. 这种数组型属性的各个元素以逗号分隔, 并且不带方括号

可以使用下标访问数组中指定的元素: colors[0]

可以通过调用其 length 字段查出给定数组中有多少个元素: colors.length

 

访问 List 类型的属性

 

有些属性将返回的类型是 java.util.List, 可以像读取任何其他属性那样读取它们. 这种 List 的各个元素是字符串, 以逗号分隔, 并且带方括号

可以使用下标访问 List 中指定的元素: colors[0]

可以通过调用其 size 方法或专用关键字 size 的方法查出给定List 的长度: colors.size 或 colors.size()

可以通过使用 isEmpty() 方法或专用关键字 isEmpty 来得知给定的 List 是不是空. colors.isEmpty 或 colors.isEmpty()

还可以使用 OGNL 表达式来创建 List, 创建一个 List 与声明一个 Java 数组是相同的: {“Red”, “Black”, “Green”}

 

 

访问 Map 类型的属性

 

读取一个 Map 类型的属性将以如下所示的格式返回它所有的键值对: 

{key1=value1,key2=value2,...,keyn=valuen}

若希望检索出某个 Map 的值, 需要使用如下格式: map[key] 

可以使用 size 或 size() 得出某个给定的 Map 的键值对的个数

可以使用 isEmpty 或 isEmpty() 检查某给定 Map 是不是空. 

可以使用如下语法来创建一个 Map: 

#{key1=value1,key2=value2,...,keyn=valuen}

 

 

 

 

  • 大小: 30 KB
分享到:
评论

相关推荐

    Struts2之Ognl详解案例TextOgnl

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

    struts2中的OGNL的源码

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

    struts2_OGNL Demo

    OGNL表达式语言是Struts2的核心特性之一,它允许开发者在Action类和JSP页面之间灵活地访问和修改对象的属性。例如,`<s:textfield name="username" />`标签会将表单中的“username”字段值绑定到Action类的相应属性...

    Struts2_OGNL

    在Struts2框架中,OGNL被广泛应用于值栈(Value Stack)之中。值栈是Struts2框架中的核心概念之一,它是一个用于临时存储对象的栈结构,这些对象包括Action实例、模型对象、临时对象等。值栈中的对象可以按照以下四...

    struts2 中 OGNL表达式的使用

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

    Struts2 使用OGNL表达式

    OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于Struts2中OGNL表达式的关键知识点: 1. **基础语法**:OGNL表达式的格式...

    struts2 ognl用法项目

    OGNL是Struts2的核心组件之一,它允许开发者以简洁的方式访问和操作对象属性,无论是简单的字段还是嵌套的对象关系。在Struts2中,OGNL用于处理动作类的属性到JSP页面的传递,以及用户输入到动作类的绑定。 首先,...

    很全面的struts2_ognl总结

    Struts2 OGNL 表达式总结 OGNL(Object-Graph Navigation Language)是一种基于 Java 的表达式语言,Struts2 框架中使用 OGNL 来访问和操作 ValueStack 中的对象。在 Struts2 中,OGNL 是一个强大的工具,允许...

    struts2 标签 OGNL

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

    Struts2核心包ognl-2的源代码

    这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作原理以及OGNL语言的实现细节非常有帮助。 OGNL的主要功能是提供一种简洁的方式来获取和设置对象的属性,甚至可以处理复杂的对象图。例如,你...

    struts2对Ognl的封装--PropertyAccessor

    OGNL是Struts2的核心组件之一,它允许开发者以简洁的语法来访问和修改对象的属性。例如,`#{user.name}`就是一个简单的OGNL表达式,用于获取或设置名为`user`的对象的`name`属性。OGNL不仅仅能处理基本类型和简单...

    struts2 ognl的用法

    OGNL作为Struts2框架的核心技术之一,其强大的表达能力和灵活的使用方式极大地提高了开发效率。理解并熟练掌握OGNL的使用,对于深入学习和高效开发基于Struts2的应用程序至关重要。通过本文对OGNL在Struts2中的应用...

    struts2-OGNL表达式测试

    OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来获取或设置对象的属性。这使得视图层与模型层之间的数据交互变得极其灵活。例如,`${user.name}` OGNL表达式可以在JSP页面中用来显示用户对象的...

    Struts2 & OGNL

    1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...

    STRUTS2+ognl

    Ognl(Object-Graph Navigation Language)是Struts2中的一个重要组件,用于在视图层和模型层之间传递数据。本文将详细介绍Struts2、Webwork以及Ognl的相关知识点,并提供入门指导。 **Struts2框架** Struts2是在...

    struts2对Ognl的封装--TypeConverter

    TypeConverter接口是Struts2的核心组件之一,它包含`convert`方法,用于将一个对象转换为目标类型。开发者可以通过实现这个接口并注册到Struts2的配置中,来扩展其默认的类型转换能力。这样,当OGNL在处理表达式时,...

    struts2 and ognl

    - **OGNL注入**:由于OGNL的强大功能,如果不加以限制,恶意用户可能利用OGNL表达式执行非法操作,因此Struts2在后期版本中增加了对OGNL表达式的安全控制。 5. **最佳实践**: - 使用拦截器进行数据校验和预处理...

    struts2_ognl实验代码

    Struts2的核心组件之一是值栈(Value Stack),这是一个存储请求相关的数据结构。当一个Action执行后,它的结果会放在值栈的顶部,可以通过OGNL表达式直接访问。 1. **值栈的使用**:值栈是Struts2中实现MVC模式的...

Global site tag (gtag.js) - Google Analytics