struts---ognl使用

1.基本概念

     ognl(object graph navigation languange) 对象导航图语言。是java的开源表达式语言,嵌套在struts2当中。作用:对数据进行访问,拥有类型转换,访问对象方法,操作集合对象等功能。

2.#,%,$用法

#:1)访问非根对象属性。
struts2中的值栈被视为根对象。Struts2依赖ValueStack对象。ValueStack对象贯穿整个Action的生命周期(每个Action的实例对象都会有一个ValueStack对象),struts2接收到客户端传来的.action请求后,就会创建一个action的实例,并将Action类的的相应属性放到ValueStack对象的顶层节点并赋予初始值,然后struts2会调用拦截链中的拦截器,当调用完所有的拦截器后,将ValueStack对象顶层节点的属性值赋给Action类中相应的属性,再调用Action类的action方法。
# = ActionContext.getContext();
#request.aa= ActionContext.getContext().getRequest().getParameter("aa");
#session.aa=ActionContext.getContext().getSession().getAttribute("aa");
#application.aa=application.getAttribute("aa ")
查找顺序:request --> session --> application
2)用于过滤和投影集合。
persons.{?#this.age>20}
3)用于构造map
#{'a':'b','c':'d'}
%:其用途是在标志的属性为字符串类型时,计算OGNL表达式的值。
$:在国际资源文件或是配置文件中引用ognl表达式

3.常用OGNL表达式

1)调用静态方法:@package.classname@methodname(parameter) 对于Math默认类即可@@min(1,2)
2) 访问集合:
<s:property value="myList"/> <s:property value="myList[0]"/> 通过下标索引访问其中值
<s:property value="mySet" />   <s:property value="mySet.size" /> Set无顺序,不能通过下标
<s:property value="myMap" /> <s:property value="myMap.keys"/> <s:property value="myMap.values"/>
3)过滤:collection.{? expression} collection.{^ expression} 第一项 collection.{& expression} 最后一项
4)投影:<s:property value="stus.{?#this.grade>=60}.username" /> 成绩及格的名字集合
<s:property value="stus.{?#this.grade>=60}.username[0]" /> 成绩及格的第一个名字

5)关于Struts2标签库属性值的%#号的关系: 

如果标签的属性值是OGNL表达式,那么无需加上%{}。 

如果标签的属性值是字符串类型,那么在字符串当中凡是出现的%{}都会被解析成OGNL表达式,解析完毕后再与其他的字符串进行拼接构造出最后的字符串值。 

我们可以在所有的属性值上加%{},这样如果该属性值是OGNL表达式,那么标签处理类就会将%{}忽略掉。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值