OGNL获取Context中的对象中的属性的方法很简单:person.name就可以获取person对象的name属性的值。OGNL会从当前valueStack开始查找所要求的属性,一直往上层查找,直到找到为止。
除此之外,Struts2还提供了一些命名对象,它们存在于Stack Context中,所以访问这些对象时需要使用#前缀来指明。
1,parameters对象,用于访问HTTP请求参数。如#parameters['foo']或#parameters.foo,用于返回调用HttpServletRequest.getParameter("foo")的返回值。
2,request对象,用于访问HttpServletRequest的属性。如#request['foo']或#request.foo,用于返回调用HttpServletRequest.getAttribute("foo")的返回值。
3,session对象,用于访问HttpSession的属性。如#session['foo']或#session.foo,用于返回调用HttpSession.getAttribute("foo")的返回值。
4,application对象,用于访问ServletContext的属性。如#application['foo']或#application.foo,用于返回调用ServletContext.getAttribute("foo")的返回值。
5,attr对象,如果可以访问到,则访问PageContext,否则将依次搜索如下对象:HttpServletRequest, HttpSession , ServletContext中的属性。
OGNL表达式还可以直接生成一个集合,如:
{e1,e2,e3}可以生成一个List;多个元素之间以英文逗号分隔。
#{key1:value1,key2:value2}可以生成一个Map;key-value之间以英文冒号分隔,多个元素之间以英文逗号分隔。
OGNL还提供了两个元素符:in和not in,in判断某个元素是否在指定的集合中,not in判断某个元素是否不在指定集合中。如下例:
<s:if test="'foo'" in {'foo','fooo'} >包含</s>
<s:if test="'foo'" not in {'foo','fooo'} >不包含</s>
除此之后,OGNL还允许通过某个规则取得集合的子集。取得子集时有如下3个操作符:
1,? 取出所有符合选择逻辑的元素
2,^ 取出符合选择逻辑的第一个元素
3,$ 取出符合选择逻辑的最后一个元素
如以下代码:person.relatives.{? #this.gender == 'male'}
直接在集合后紧跟.{}运算符表明用于取出该集合的子集,在{}内使用?表明取出所有符合选择逻辑的元素,而#this代表集合里元素。因此,上面代码的含义是:取出person里所有的gender等于male的relatives的属性的集合。
OGNL支持基本的Lambda(λ)表达式语法。通过这种Lambda表达式语法,可以让我们在OGNL表达式中使用一些简单的函数。如下面的斐波那契数列:
if n==0 return 0;
elseif n==1 return 1;
else return fib(n-2)+fib(n-1);
fib(0)=0
fib(1)=1
fib(11)=89
我们可以使用OGNL表达式来求该数列中第11个元素的值:
<s:property value="#fib =:[#this==0 ? 0 : #this==1 ? 1 : #fib(#this-2) + #fib(#this-1)], #fib(11)" />
用OGNL表达式取出valueStack中的值的方式为${requtestScope.username};
分享到:
相关推荐
Struts2 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它在Struts2框架中扮演着核心角色,用于数据绑定、控制流程以及动态方法调用。这篇博文可能详细介绍了Struts2框架中OGNL的使用、工作原理...
### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...
在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...
OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于在Action对象和视图之间传递数据。在这个主题中,我们将深入探讨Struts2 OGNL2.6.11的源码,了解其内部工作原理和关键功能。 首先,...
Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...
Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...
struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...
Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...
Struts2 OGNL---标签详解析 都有实例 适合初学者
其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...
这个"Struts2 OGNL示例(Maven项目)"提供了使用OGNL与Struts2集成的实例,帮助开发者更好地理解和应用这一强大的特性。 首先,让我们了解什么是OGNL。OGNL是一种强大的表达式语言,允许我们访问和修改对象图中的...
这个压缩包包含的是OGNL的2版本的源代码,这对于理解Struts2框架的工作原理以及OGNL语言的实现细节非常有帮助。 OGNL的主要功能是提供一种简洁的方式来获取和设置对象的属性,甚至可以处理复杂的对象图。例如,你...
关于struts2 OGNL 详细教程,对初学者有帮助
Struts2 OGNL(Object-Graph Navigation Language)表达式是一种强大的、动态的数据绑定和脚本语言,广泛应用于Struts2框架中。它允许开发者在视图层与模型层之间灵活地传递数据,增强了MVC架构中的灵活性。本文将...
8. **Struts2中的OGNL拦截器**:Struts2框架使用了一系列拦截器来增强OGNL的功能,例如ValueStack,它可以将Action上下文中的所有对象暴露给OGNL表达式。这使得在视图层直接访问Action的属性变得简单。 总的来说,...
Struts2 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,广泛应用于Apache Struts2框架中,用于在视图、控制器和模型之间进行数据的表达和操作。Struts2是Java Web开发中最流行的MVC框架之一,而...
### Struts2 OGNL 表单提交问题详解 #### 一、背景介绍 Struts2框架作为一款流行的企业级应用开发框架,在处理MVC架构方面有着独特的优势。其中,OGNL (Object-Graph Navigation Language) 作为一种强大的表达式...
struts2 ognl源文件 在ECLIPSE导入后可方面的利于开发