我是靠谱客的博主 友好冰棍,最近开发中收集的这篇文章主要介绍OGNL中$、%、#、{}、^、$ 标签的使用简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. Struts2中将ActionContext作为OGNL的上下文环境(ActionContext内部含有一个Map对象)
2. Struts2中的OGNL表达式语言的根对象是一个ValueStack,ValueStack中的每一个对象都被视为根对象。
Struts2框架将实例化的Action对象放入ValueStack中,如果是Action链,则多个Action都存在于ValueStack中。而ValueStack中除了Action外,Struts2框架还将parameters,request,response,session,application,attr等对象放到ActionContext中,访问这些对象需要加前缀#。
哈哈

  • OGNL中 $ 号的使用
1..在国际化资源文件中,引用OGNL表达式
2..在struts.xml文件中,引用OGNL表达式
  • OGNL中%号的使用

“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。
这个类似js中的eval,很暴力。
1..使用%{}可以取出保存在值堆栈中的Action对象,直接调用它的方法
2..如果Action继承了ActionSupport,那么在页面标签中可以使用%{getText(‘key’)}获取国际化信息

  • OGNL中#号的使用

    OGNL中的#号可以取出堆栈上下文中存放的对象
    这里写图片描述

    “#”符号的用途一般有三种:

    — 、访问非根对象属性,例如#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(“msg”) 。
    二、用于过滤和投影(projecting)集合,如persons.{?#this.age>25},persons.{?#this.name==’pla1’}.{age}[0]。
    三、用来构造Map,例如示例中的#{‘foo1’:’bar1’, ‘foo2’:’bar2’}。
    利用投影获取属性
    利用投影获取List中对象的username属性时,其中{}表示的是一个集合
    stus.{username}就表示将suts中所有的username属性取出组成一个新的列表

    利用选择获取属性
    OGNL表达式是很灵活的,可以同时使用选择技术与投影技术获取属性
    使用选择技术时,#this代表当前元素,问号?是把所有满足条件的元素都取出来。

    上箭头^是开始的意思,即取符合条件的数据索引中第一条数据,所以stus.{^#this.grade>=60}.{username}输出的是[张三]
    注意,此时输出文本中包含中括号,这表示它是一个列表。
    而stus.{?#this.grade>=60}.{username}[0]输出的是张三,是字符串,二者是不同的。
    美元符号是结束的意思,即取符合条件的数据索引中最后一条数据,所以stus.{#this.grade>=60}.{username}输出的是[王五]
    这三个符号:问号、上箭头、美元符所返回的都是List
    另符两语法:
    使用Top语法获取值栈中的第二个对象的属性:
    使用N语法获取值栈中的第二个对象的属性:

最后

以上就是友好冰棍为你收集整理的OGNL中$、%、#、{}、^、$ 标签的使用简介的全部内容,希望文章能够帮你解决OGNL中$、%、#、{}、^、$ 标签的使用简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部