ognl深度解析 (对象图导航语言)

来源:互联网 发布:制造业大数据方案 编辑:程序博客网 时间:2024/05/18 01:21

ognl深度解析 (对象图导航语言)
OgnlContext 继承与 map接口
1.根对象,不用#(只有一个根)
name

2.非根对象
#person

3.属性
#person.id

4.属性中某些类型所对应的方法
#person.name.toUpperCase().length()

5.某些类型所对应的静态方法
@java.lang.Integer@toBinaryString(10)--默认@@min(4,10)为[java.lang.Math]

6.生成list对象
new java.util.linkedList()  用ognl后得到[] 空的list
{'aa','bb','cc'}            用ognl后得到[aa,bb,cc] 的list
在ognl中集合和数组是一样的,
{'aa','bb','cc'}[2] or #list[2]     结果  cc

7.处理映射Map
#{'key1':'value1','key2':'value2'}['key2']  结果 value2

8.过滤(filtering):获得原来集合的子集合-- 集合.{? 表达式}
#list.{? #this.length()>2} 判断list中每一个元素的长度大于2    结果是一个集合
#list.{? #this.length()>2}.size()  结果是集合的长度
获得集合中的第一个元素#list.{^ #this.length()>2}  结果 是一个集合(因为集合可能为空,为空时[]) 里面含有第一个元素
获得集合中最后一个元素#list.{$ #this.length()>2}  结果 是一个集合(因为集合可能为空,为空时[]) 里面含有最后一个元素
#this 相当于集合中的每个元素

9.投影 原集合的某些列,注意 结果是一个集合
#list.{name}  其中list里有person对象 对象里有id和name    结果  所有人名字集合
#list.{#this.name.length()<5?'helloworld':#this.name}长度大于5,显示name本身,否则显示helloworld 
<s:iterator value="list.{name}"><s:property value="age"/><br></s:iterator>

10.值栈
struts2 中 根对象是值栈 ValueStack 栈中最顶层一定值action对象,例如<s:property value="username"> 从值栈里第一个action里找,不会去找别的action,不用加#

struts2 中 命名对象 parameters 用户请求的参数,request , session , application , attr(首先在当前页面找,按照所有范围,足个去查)
#request.username

struts2 中 静态方法@vs@method

底层实现原理 <%= ((OgnlAction)ActionContext.getContext().getValueStack().peek()).getList().get(0).getCat().getName()>  --需要导包

(OgnlAction)ActionContext.getContext().getValueStack().peek()取值栈中第一个,第一个存储的是action,调用get、set方法 实现ognl

11.% 
<s:property value="name"/> 中 value=“@” 其中@按照 ognl 解析
而 <s:a href="getList.action?id=%{#person.id}"></s:a> 中#person.id如果不加%{}会按照字符串解析
如果 在ognl解析里加上%{},解析时会忽略%{},不算错。

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3岁宝宝嘴唇干裂怎么办 毛毛剪短了扎人怎么办 不办仪式的婚宴怎么办 发型师40岁后该怎么办 头发油的特别快怎么办 头发很油 又少怎么办 头发两天就油了怎么办 头发被剪的很丑怎么办 美发师年龄大了怎么办 青春期头发掉的厉害怎么办 剪了短发头发翘怎么办 4个月婴儿咳嗽怎么办 2个月婴儿咳嗽怎么办 5个月婴儿咳嗽怎么办 烫的内扣睡觉怎么办 站了一天腿疼怎么办 头发被剪得很丑怎么办 淹脖子破皮了怎么办 孩子胖脖子淹了怎么办 宝宝屁股破皮了怎么办 新生儿屁屁发红及烂怎么办 头发烫完太蓬松怎么办 头发烫的太卷了怎么办 烫了卷发很毛躁怎么办 烫发后头发干枯毛躁怎么办 烫完头发掉发怎么办 烫发掉发严重该怎么办 烫头发后掉头发怎么办 烫过头发后毛躁怎么办 烫了头发像大妈怎么办 头发烫了之后很毛躁怎么办 鳄龟爪子烂了怎么办 乌龟壳边缘烂了怎么办 乌龟拉绿色的水怎么办 小乌龟龟壳变软怎么办 鳄龟不待在水里怎么办 脖子整天黏黏的怎么办 有脊椎侧弯跳舞怎么办 落枕10天还不好怎么办 落枕十几天没好怎么办 肩一边高一边低怎么办