• OGNL


    一、OGNL简介

      OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去

    存取对象的属性。

    二、相对其它表达式语言具有下面几大优势

      1、支持对象方法调用,如xxx.doSomeSpecial();

      2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;

      3、支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(price*discount),这个表达式会返回80

      4、访问OGNL上下文(OGNL context)和ActionContext

      5、操作集合对象

      6、可以直接new一个对象

    三、结合Struts2符号(#、%、$)使用,主要有三种用途

      1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext()

      2、用于过滤和投影(projecting)集合,如books.{?#this.price<100}

      3、构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}

    四、表达式

      1、基本对象树的访问:用 . (点号)连接对象和属性

      2、对容器变量的访问:用 # (井号)加上表达式

      3、使用操作符号

      4、数组、ArrayList等容器顺序访问,Map按键查找,容器的构造表达式、对象构建

         如:group.users[0]

          #session['mySessionPropKey']

            {"green", "red", "blue"}构造一个List、

            #{"key1" : "value1", "key2" : "value2", "key3" : "value3"}构造一个Map

         new Java.net.URL("xxxxxx/")

      5、对静态方法或变量的访问,如:@com.javaeye.core.Resource@ENABLE

      6、方法调用:group.containsUser(#requestUser)

      7、投影或选择:投影 group.userList.{username}       选择group.userList.{? #txxx.xxx != null}

      选择操作符有三种:

      ? 选择满足条件的所有元素
      ^ 选择满足条件的第一个元素
      $ 选择满足条件的最后一个元素
  • 相关阅读:
    weka中算法说明[转]
    浅入浅出JS中的eval及json
    JavaScript变量声明提前
    三种常用的js数组去重方法
    深入理解JavaScript的变量作用域
    调试工具--console用法收藏
    《js高级程序设计》--第三章数据类型
    Oracle数据备份和恢复
    Oracle归档日志管理
    Oracle字符集的设置
  • 原文地址:https://www.cnblogs.com/zxguan/p/7819605.html
Copyright © 2020-2023  润新知