`

Struts 2的OGNL表达式

阅读更多
Struts 2的OGNL表达式

标准的OGNL会设定一个根对象(root对象)。假设使用标准OGNL表达式来求值(不使用Struts 2的OGNL表达式),如果OGNL上下文(OgnlContext Map类型)有两个对象:foo对象,在OgnlContext中名称为foo;bar对象,在OgnlContext中名称为bar。同时foo对象被设置为根对象(root)。则利用下面的OGNL表达式求值:
//返回foo.getBlah();
#foo.blah
//返回bar.getBlah();
#bar.blah
//返回foo.getBlah();
blah

★ 说明 ★

使用OGNL是非常简单的,如果要访问的对象不是根对象,如示例中的bar对象,则需要使用命名空间,用“#”来标识,如“#bar”;如果访问一个根对象,则不用指定命名空间,可以直接访问根对象的属性。
在Struts 2框架中,值栈(Value Stack)就是OGNL的根对象,假设值栈中存在两个对对象实例:Man和Animal,这两个对象实例都有一个name属性,Animal有一个species属性,Man有一个salary属性,假设Animal在值栈的顶部,Man在Animal后面,下面的代码片断会帮助读者更好地理解OGNL表达式:
//调用animal.getSpecies();
species
//调用man.getSalary();
salary
//调用animal.getName();
name;
最后一行示例代码,返回的是animal.getName()返回值,即返回了Animal的name属性,因为Animal是值栈的顶部元素,OGNL将从顶部元素搜索,所以会返回Animal的name属性值。如果要获得Man的name值,则需要如下代码:man.name
Struts2允许在值中使用索引:
[0].name //调用animal.getName();
[1].name //调用man.getName();
★ 注意 ★

使用索引,并不是直接获得指定的元素,而是从指定的索引位置搜索。

Struts2 中的ONGL Context是ActionContext主要对象如下:
Context Map-----application,session,(值栈)root,request,parameters,attr.
OGNL表达式
 
OGNL表达式语言

<o:p></o:p>

一    常量

<o:p></o:p>

Char
‘a’

String
‘hello’ 或 “hello”

单个字符 /”a/”

Boolean
true | false

Int
123


<o:p></o:p>

注意:string可以用单引号也可以用双引号。但是单个字母 如’a’与”a”是不同的,前者是char, 后者是string。

       <ww:property  value=”\”a\””>  或<ww:property  value’”a”’>

<o:p></o:p>

二    操作符号

+

-

*

/

mod
1+1    ‘hello’+’world’

<o:p></o:p>

++  --
foo++

==   !=
  <o:p></o:p>

in    not in
foo in aList

=  赋值
foo=1


<o:p></o:p>

三    方法调用

class Muppet{

       int fun();

}

调用:fun()-10

<o:p></o:p>

四    访问静态方法和变量

@some.pkg.SomeClass@CONSTANTS

@some.pkg.SomeClass@someFun()

<o:p></o:p>

五    context

ActionContext().getContext().getSession().get(“kkk”)
#session.kkk

ActionContext().getContext().get(“person”)
#person


# 符号相当于ActionContext.

ActionContext 中的主要对象: parameters, attr, request, session, application

<o:p></o:p>

六    集合操作

list & array访问

list.get(0)    array[0]
list[0]    array[0]

list.get(0).getName()   
list[0].name

list.size()   array.length
list.size         array.length

list.isEmpty()
list.isEmpty

List list = new ArrayList()

list.ad(“foo”);  list.add(“bar”);
{“foo”, “bar”}

{1,2,3}


<o:p></o:p>

Map

map.get(“foo”)
map[‘foo’]   或   map.foo

map.get(1)
map[1]

Map map = new HashMap()

map.put(“k1”, “v1”);   map.put(“k2”,”v2”);
#{“k1”:”v1”, “k2”:”v2”}


<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

七    筛选 与 投影

筛选 collection.{? expr }:    #this 代表当前循环到的object

投影 collection.{ expr }

<o:p></o:p>

children.{name}
(投影)得到 Collection<String> names, 只有孩子名字的list

children.{?#this.age>2}
(筛选)得到 collection<Person> age>2的记录

children.{?#this.age<=2}.{name}
先筛选再投影

children.{name+’->’+mother.name}
(筛选)得到元素为 str->str  的集合


<o:p></o:p>

NOTE : #的三种用途

1.       引用 ActionContext 中的object       #person 

2.       动态创建map                        #{1:’a’, 2:’b’}

3.       对集合进行筛选(#this)               #this

<o:p></o:p>
分享到:
评论

相关推荐

    struts2 ognl表达式

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

    struts2 OGNL表达式

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

    struts2 OGNL表达式使用

    struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...

    struts2 OGNL 表达式及各种标签的使用

    - 在Struts2的Action类中,可以使用OGNL表达式来动态地处理请求参数,如`String name = (String)params.get("user.name");` - 在JSP页面上,使用OGNL标签显示和处理数据,如`管理员界面&lt;/s:if&gt;`。 通过理解并熟练...

    Struts2 使用OGNL表达式

    以下是一些关于Struts2中OGNL表达式的关键知识点: 1. **基础语法**:OGNL表达式的格式通常为`object.property`或`object[index]`,用于访问对象的属性或数组/集合的元素。例如,`user.name`将获取名为`user`的对象...

    struts2 中 OGNL表达式的使用

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

    struts2OGNL表达式ActionContext及valuesStack.pdf

    在Struts2中,OGNL表达式的使用大大提升了代码的可读性和维护性。 首先,`#`字符在OGNL中扮演着关键角色。它主要用于访问OGNL上下文和Action上下文。`#`前缀可以用来获取`ActionContext`,这包含了四个重要的域:...

    Struts2 OGNL表达式实例详解

    Struts2 OGNL表达式实例详解 Struts2 OGNL表达式实例详解主要介绍了Struts2 OGNL表达式实例详解,相关实例代码,需要的朋友可以参考。Object Graph Navigation Language(对象图导航语言),就是用点来访问成员变量...

    ognl表达式 ognl表达式

    在Struts2框架中,OGNL表达式被广泛应用于视图层,比如在JSP页面中用来获取数据。OGNL表达式的语法简洁明了,例如: - **直接调用方法**:`xxx.sayHello()`。 - **访问静态方法和常量**:`@java.lang.String@format...

    Struts2 如何使用OGNL表达式(三十八)

    本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的核心组成部分,它允许开发者在Action类和JSP页面之间灵活地传递和访问数据。在Action类中,你可以设置属性,然后在JSP页面上通过OGNL...

    ognl表达式java使用案例详解(测试通过)

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1、 支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@...

    struts2-OGNL表达式测试

    这个“struts2-OGNL表达式测试”可能是一个测试项目或代码示例,旨在演示如何在Struts2应用中使用OGNL表达式。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来获取或设置对象的属性。这使得视...

    Struts2深入学习----OGNL表达式原理

    Struts2是一个流行的Java Web...通过深入学习OGNL表达式原理,开发者能够更好地利用Struts2框架,提高Web应用的开发效率和可维护性。对于那些希望在Struts2开发中更进一步的人来说,熟悉和掌握OGNL是必不可少的技能。

    Struts2的标签库及OGNL表达式语言

    本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的...

    JS:ognl表达式

    - **框架集成**:许多 Java 框架,如 Struts2、Hibernate Validator 等,都集成了 OGNL 表达式用于数据绑定和验证。 - **模板引擎**:在模板引擎中使用 OGNL 表达式来动态渲染页面。 - **业务逻辑处理**:在复杂的...

    OGNL表达式

    - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" %&gt;`。 - **$**:在JSP页面中表示EL表达式的开头,但在...

    struts2_OGNL表达式ActionContext及valuesStack

    本文将深入探讨Struts2中的OGNL表达式,ActionContext以及valuesStack。 首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样...

    struts2中ognl表达式的理解和用法

    3. 结果类型配置:在Struts2的配置文件中,结果类型可以通过OGNL表达式动态决定,例如,`resultType="#attr.resultType"`。 4. JSP标签库:Struts2提供了丰富的JSP标签库,这些标签内部也大量使用了OGNL来获取和显示...

    精通struts2的ognl表达式

    ### 精通Struts2中的OGNL表达式 在深入探讨Struts2框架的核心功能时,理解并熟练掌握OGNL(Object-Graph Navigation Language)表达式的应用是至关重要的一步。OGNL是一种强大的表达式语言,它允许开发者通过简洁、...

    struts2 ognl的用法

    在Struts2中使用OGNL表达式主要涉及以下几种符号:“#”、“%”和“$”。 ##### 1. “#”符号的使用 - **访问Struts2上下文**: - `#`可用于访问当前的`ActionContext`,如`#ActionContext.getContext()`。 - ...

Global site tag (gtag.js) - Google Analytics