zoukankan      html  css  js  c++  java
  • 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}

      选择操作符有三种:

      ? 选择满足条件的所有元素
      ^ 选择满足条件的第一个元素
      $ 选择满足条件的最后一个元素
  • 相关阅读:
    DataFrame转矩阵Np-Array
    十月15
    十月14
    十月14
    十月12
    十月10
    2016-02-22 有无网络 2
    2016-02-22 有无网络的提示 1 h m
    2016-02-20 web view
    20160220 下拉刷新 上拉加载
  • 原文地址:https://www.cnblogs.com/zxguan/p/7819605.html
Copyright © 2011-2022 走看看