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

@[email protected](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),

Hibernate(2012/2/27)

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

11、parameters,#parameters.username

request ,#request.username

session,#session.username

application,application.username

attr,#attr.username

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

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

Hibernate(2012/2/27)

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

@[email protected]

相关文章:

  • 2021-04-21
  • 2021-11-05
  • 2021-04-14
  • 2022-01-16
  • 2021-07-12
  • 2021-04-13
  • 2021-11-11
  • 2021-10-12
猜你喜欢
  • 2021-10-12
  • 2021-09-29
  • 2022-12-23
  • 2021-11-17
  • 2021-09-20
  • 2021-11-23
  • 2021-07-29
相关资源
相似解决方案