struts2 OGNL 表达式
2013-10-31 14:04
393 查看
一、Struts 2支持以下几种表达式语言:
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。
Struts 2默认的表达式语言是OGNL,
二、它相对其它表达式语言具有下面几大优势:
支持对象方法调用,如xxx.doSomeSpecial();
支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
访问OGNL上下文(OGNL context)和ActionContext;
操作集合对象。
三、# 的使用
访问OGNL上下文和Action上下文
用于过滤和投影集合
构造Map
OGNL上下文中只有一个根对象,而Struts2为我们定义了很多对象,分别是"ValueStack","Parameters","Session","Request","Application","Attr"。
其中"ValueStack"被设置为上下文的根对象。
访问非根对象必须加"#"
"%{}"的含义是告诉标签的处理类,它包含的字符串按照OGNL的表达式处理。若处理类的属性值默认为OGNL表达式处理,则忽略"%{}",所以建议使用OGNL时加上"%{}"
OGNL必须通过getters方法进行导航
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。
Struts 2默认的表达式语言是OGNL,
二、它相对其它表达式语言具有下面几大优势:
支持对象方法调用,如xxx.doSomeSpecial();
支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
访问OGNL上下文(OGNL context)和ActionContext;
操作集合对象。
三、# 的使用
访问OGNL上下文和Action上下文
名称 | 作用 | 例子 |
#parameters | 包含当前HTTP请求参数 | #parameters.id |
#request | 包含当前HttpServletRequest属性 | #request.userName |
#session | 包含当前HttpSession的属性 | #session.userName |
#application | 包含当前应用的ServletContext的属性 | #application.userName |
#attr | 按request > session > application顺序访问其属性 | #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止 |
<s:iterator value="books.{?#this.price > 35}"> </s:iterator>
构造Map
<s:set name="cities" value="#{'beijing':'北京','shanghai':'上海'}"/>
OGNL上下文中只有一个根对象,而Struts2为我们定义了很多对象,分别是"ValueStack","Parameters","Session","Request","Application","Attr"。
其中"ValueStack"被设置为上下文的根对象。
访问非根对象必须加"#"
"%{}"的含义是告诉标签的处理类,它包含的字符串按照OGNL的表达式处理。若处理类的属性值默认为OGNL表达式处理,则忽略"%{}",所以建议使用OGNL时加上"%{}"
OGNL必须通过getters方法进行导航
相关文章推荐
- struts2中#,$,%的用法以及el,ognl表达式的用法
- struts2——国际化、OGNL表达式语言
- Struts2深入学习----OGNL表达式原理
- OGNL表达式struts2标签“%,#,$”
- Struts2 使用OGNL表达式访问ENUM对象
- [转载]OGNL表达式struts2标签“%,#,$”
- Struts2 OGNL表达式
- struts2_day03_16_ognl表达式#使用_17_ognl表达式%使用
- struts2 中 OGNL表达式的使用
- Struts2 如何使用OGNL表达式(三十八)
- S7.2_Struts2_OGNL OGNL表达式的投影和选择技术范例,OGNL表达式#和$符号的使用范例,以及值栈
- struts2_ognl表达式与值栈
- Struts2系统学习(16)OGNL表达式及基本原理分析
- 关于Struts2中的值栈与OGNL表达式
- Struts2的OGNL表达式
- Struts2之ognl表达式(上)
- Struts2 OGNL表达式介绍
- OGNL表达式struts2标签“%,#,$”的区别
- OGNL表达式struts2标签“%,#,$”
- struts2中ognl表达式的运用