`

OGNL表达式

阅读更多

OGNL表达式:

1.  不要忽略了用于界定整个常量字符串的单引号。

<s:property value=” ’You said,\”Hello\” ’ ”/>

 

2.操作符:

逗号操作符: ,                   例如: name,#manager.name  显示的是#manager.name

花括号操作符:{}               例如:{“a”,”b”}   2个元素的列表

Innot in操作符:name in {“a”,”b”}

 

3.调用静态方法

@class@method(args)

例如: @@max(5,3) @Math@max(5,3)          

 

4Javabean的索引属性:

索引属性就是获取和设置数组时使用的属性。getInterest(2),如果设值的情况下,调用setInterest(2,value)方法。

 

5.创建数组:

new int[]{1,2,3}   new int[5]

获取数组的长度array.length

 

6.创建Map:

#{“key1”:”value1”, “key2”:”value2”, “key3”:”value3”, “key4”:”value4”}

Map.key1

 

集合的伪属性

例如size(),isEmpty() 并不符合javabean对于属性访问器方法的命名要求(setXxxx() getXxxx()),因此不能象访问javabean属性一样来调用这些方法。

 

集合类型

伪属性

OGNL表达式

Java代码

List,Set,Map

Size,isEmpty

List.size,set.isEmpty

List.size(),set.isEmpty()

List

iterator

List.iterator

List.iterator()

Map

Keys,values

Map.keys,map.values

Map.keySet(),may.values()

Set

Iterator

Set.iterator

Set.iterator()

Iterator

Next,hasnext

Iter.next,iter.hasNext

Iter.next(),iter.hasNext()

Enumeration

Next,hasNext,nextElement

hasMoreElements

Enum.next,enum.hasNext

Enum.nextElement()

Enum.hasMoreElements()

 

7.投影(projection):

在一个集合中对每一个元素调用相同的方法,或者抽取相同的属性,并将结果保存为一个新的集合。这称之为“投影”。

#employees.{name} 将返回所有雇员名字的列表。

在投影期间,使用#this变量来引用迭代中的当前元素.

Objects.{#this instanceof String? #this:#this.toString()} 产生一个新的字符串列表

 

8.选择(selection):

使用表达式从集合中选择某些元素,并将结果保存到新的集合中,这称之为“选择”。

#employees.{?#this.salary>3000}  返回雇员薪水大于3000的所有雇员列表。

 

将选择语法中的“?”换成“^”,可以从集合中只选择第一个匹配的元素,并将其作为一个列表返回,如果没有匹配成功,返回一个空列表。

#employees.{^#this.salary>3000}

 

将选择语法中的”?”换成”$”,可以从集合中选择最后一个匹配的元素,并将其作为一个列表返回。

#employees.{$#this.salary>3000}

 

9.lambda表达式:

 Lambda表达式,可以写一个参数,定义lambda表达式的语法:[…]。这个参数通过#this来引用.

声明一个使用递归来计算阶乘的函数,然后调用它:

#face=: [#this<=1?1:#this*face(#this-1)] , #face(30)

 

10.OGNL的类型转换:

例如:要将对象转换为Boolean类型:

如果对象是Number,0true,

如果Character类型,字符值非0true,

如果是一般对象,只要这个对象不为null,为true.

 

11.值栈(valueStack):

OGNL上下文中的根对象可以直接访问,不需要使用任何特殊的“标记”,而引用上下文中的其他对象则需要使用”#”来标记。由于值栈是上下文中的根对象,因此可以直接访问。

Context map:(根对象)

Application

Session

Value stack

Request

Parameters 

Attr(依次搜索page,request.sessionapplication范围)

 

Top关键字

Top,用于获取栈顶的对象。

 

12Struts2中的命名对象:

这些命名对象没有保存在值栈中,而是保存在 ActionContext中,因此访问这些对象需要使

”#”标记。

#parameters.id   相当于getParameter()方法

#request.user    相当于getAttribute()方法

#session.user    相当于getAttribute()方法

#application.user 相当于getAttribute()方法

#attr.user      

 

13.与jsp2.1的冲突:

#字符已经被jsp内置的表达式语言EL所使用。

禁止jsp El的使用:

Web.xml文件中添加:

<jsp-config>

       <jsp-property-group>

              <url-pattern>*.jsp</url-pattern>

              <el-ignored>true</el-ignored>

       </jsp-property-group>

</jsp-config>

 

 

 

 

分享到:
评论

相关推荐

    ognl表达式 ognl表达式

    ognl表达式 ognl表达式 ognl表达式 ognl表达式

    Struts2 使用OGNL表达式

    1. **基础语法**:OGNL表达式的格式通常为`object.property`或`object[index]`,用于访问对象的属性或数组/集合的元素。例如,`user.name`将获取名为`user`的对象的`name`属性。 2. **动态属性**:OGNL支持动态属性...

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

    因此,开发者应使用Struts2的安全配置选项,如禁用不安全的OGNL表达式,或者使用`@SkipValidation`注解来限制某些Action方法的OGNL表达式执行。 总结来说,Struts2中的OGNL表达式是连接模型和视图的关键工具,它...

    JS:ognl表达式

    JS:ognl表达式 JS:ognl表达式 JS:ognl表达式

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

    这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是一种强大的表达式语言,允许开发者通过简单的字符串表达式来访问和修改对象图。在Struts2中,OGNL用于在Action和...

    struts2 中 OGNL表达式的使用

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

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

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

    ognl表达式

    1. **表达式语法**:OGNL表达式通常由对象引用、属性访问、方法调用和运算符组成。例如,`user.name`表示访问用户对象的name属性,而`list[0].title`则表示访问列表的第一个元素的title属性。 2. **上下文(Context...

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

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

    ognl表达式案例

    在本案例中,我们将深入探讨OGNL表达式的用法及其在Struts2中的应用。 首先,OGNL是一种灵活的表达式语言,允许开发者访问和操作对象图。它的核心特性包括属性访问、方法调用、集合操作、类型转换等。例如,`user....

    struts2 ognl表达式

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

    OGNL表达式2讲

    在本资源“OGNL表达式2讲”中,我们将深入探讨OGNL的使用,特别是针对各种常用的标签和实际应用案例。这个压缩包包含一个名为“OGNL”的文件,可能是一个文档或代码示例,用于辅助理解讲解内容。 1. **OGNL基础** ...

    OGNL表达式语言学习

    NULL 博文链接:https://huguifuture.iteye.com/blog/761843

    struts2 OGNL表达式

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

    struts2-OGNL表达式测试

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

    ognl表达式的用法

    下面我们将深入探讨如何使用OGNL表达式及其在示例代码中的应用。 首先,让我们看看提供的示例代码片段。这段代码是一个基于JSP的Struts2应用,展示了如何使用OGNL表达式来访问不同范围内的属性(request、session、...

    struts2_OGNL表达式ActionContext及valuesStack

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

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

    这篇博客将深入探讨OGNL表达式的理解和用法。 OGNL的全称是对象图导航语言,它的主要功能是在对象模型中导航,查找和修改值。在Struts2中,OGNL被广泛用于视图层和控制器层之间的数据传递,以及动态方法调用。 一...

Global site tag (gtag.js) - Google Analytics