Hibernate(2012/2/27)

来源:互联网 发布:51单片机串口程序详解 编辑:程序博客网 时间:2024/05/17 00:54

1、当使用OGNL调用静态方法的时候,需要按照如下语法编写表达式:

       @package.classname@methodname(parameter)

2、对于OGNL来说,java.lang.Math是其的默认类,比如:

       @@min(4, 10);

3.、对于OGNL来说,数组与集合是一样的,都是通过下表索引来去访问的,构造集合的时候用{.....}形式。

4、使用OGNL来处理映射(Map)的语法格式如下所示:

       #{'key1':'value1', 'key2':'value2', 'key3':'value3'}

5、OGNL作用:过滤(filtering),针对集合

          collection.{?expression}

用于过滤和投影(projecting)集合

如person.{?#this.age>20}

? --获取集合中所有满足选择逻辑的对象(拿sql来做比例就是"select * from xxx where age>20")

^ --获取集合中第一个满足选择逻辑的对象(拿sql来做比例就是"select top(1) from xxx where age>20")

$ --获取集合中最后一个满足选择逻辑的对象

6、OGNL针对集合提供了一些伪属性(如size, isEmpty),让我们可以通过属性的方式来调用方法(本质原因在于集合当中的很多方法并不符合JavaBean的命名规则),但我们依然可以通过调用方法来实现与伪属性相同的目的。

7、投影:collection.{expression}

8、投影与过滤之间的差别:类比于数据库中的表,过滤式取行操作,而投影是取列操作。

//查询list集合中name的那一列,其中name的长度小于5的用"hello world"替换,name长度大于5的就返回本身

 System.out.println( Ognl.getValue("#list.{#this.name.length() <= 5 ? 'hello world' : #this.name}", context, context.getRoot()));
 9、在struts2中有一个称之为值栈的概念(ValueStack),

10、在struts2中,根对象就是valueStact。在struts2的任何流程当中,valueStact中的最顶层对象一定是Action对象

11、parameters,#parameters.username

        request ,#request.username

         session,#session.username

         application,application.username

        attr,#attr.username

以上这些对象称为“命名对象”。

12、valueStack与命名对象的关系图示:

13、访问静态方法或是静态成员变量的改进:

        @vs@method

原创粉丝点击