在 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}
相关推荐
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...
其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...
OGNL表达式语言是Struts2的核心特性之一,它允许开发者在Action类和JSP页面之间灵活地访问和修改对象的属性。例如,`<s:textfield name="username" />`标签会将表单中的“username”字段值绑定到Action类的相应属性...
在Struts2框架中,OGNL被广泛应用于值栈(Value Stack)之中。值栈是Struts2框架中的核心概念之一,它是一个用于临时存储对象的栈结构,这些对象包括Action实例、模型对象、临时对象等。值栈中的对象可以按照以下四...
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于Struts2中OGNL表达式的关键知识点: 1. **基础语法**:OGNL表达式的格式...
OGNL是Struts2的核心组件之一,它允许开发者以简洁的方式访问和操作对象属性,无论是简单的字段还是嵌套的对象关系。在Struts2中,OGNL用于处理动作类的属性到JSP页面的传递,以及用户输入到动作类的绑定。 首先,...
Struts2 OGNL 表达式总结 OGNL(Object-Graph Navigation Language)是一种基于 Java 的表达式语言,Struts2 框架中使用 OGNL 来访问和操作 ValueStack 中的对象。在 Struts2 中,OGNL 是一个强大的工具,允许...
Struts2是一个流行的Java web框架,它利用OGNL(Object-Graph Navigation Language)作为其核心表达式语言。OGNL是一种强大的表达式语言,允许开发者在Java对象之间导航和操作数据。在Struts2中,OGNL被广泛用于访问...
这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作原理以及OGNL语言的实现细节非常有帮助。 OGNL的主要功能是提供一种简洁的方式来获取和设置对象的属性,甚至可以处理复杂的对象图。例如,你...
OGNL是Struts2的核心组件之一,它允许开发者以简洁的语法来访问和修改对象的属性。例如,`#{user.name}`就是一个简单的OGNL表达式,用于获取或设置名为`user`的对象的`name`属性。OGNL不仅仅能处理基本类型和简单...
OGNL作为Struts2框架的核心技术之一,其强大的表达能力和灵活的使用方式极大地提高了开发效率。理解并熟练掌握OGNL的使用,对于深入学习和高效开发基于Struts2的应用程序至关重要。通过本文对OGNL在Struts2中的应用...
OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来获取或设置对象的属性。这使得视图层与模型层之间的数据交互变得极其灵活。例如,`${user.name}` OGNL表达式可以在JSP页面中用来显示用户对象的...
1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...
Ognl(Object-Graph Navigation Language)是Struts2中的一个重要组件,用于在视图层和模型层之间传递数据。本文将详细介绍Struts2、Webwork以及Ognl的相关知识点,并提供入门指导。 **Struts2框架** Struts2是在...
TypeConverter接口是Struts2的核心组件之一,它包含`convert`方法,用于将一个对象转换为目标类型。开发者可以通过实现这个接口并注册到Struts2的配置中,来扩展其默认的类型转换能力。这样,当OGNL在处理表达式时,...
- **OGNL注入**:由于OGNL的强大功能,如果不加以限制,恶意用户可能利用OGNL表达式执行非法操作,因此Struts2在后期版本中增加了对OGNL表达式的安全控制。 5. **最佳实践**: - 使用拦截器进行数据校验和预处理...
Struts2的核心组件之一是值栈(Value Stack),这是一个存储请求相关的数据结构。当一个Action执行后,它的结果会放在值栈的顶部,可以通过OGNL表达式直接访问。 1. **值栈的使用**:值栈是Struts2中实现MVC模式的...