OGNL

来源:互联网 发布:小巴蒂克劳奇 知乎 编辑:程序博客网 时间:2024/06/05 00:48

1.当使用OGNL调用静态方法的时候,需要按照如下的语法编写表达式:@package.classname@methodname(parameter)


2.对于OGNL来说,java.lang.Math是其默认的类,如果调用java.lang.Math的静态方法时,无需指定类的名字,比如@@min(4,10);


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


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

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


5.过滤(filtering):collection.{? expression}


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


7.过滤(filtering),获取到集合中的第一个元素:collection.{^ expression}


8.过滤(filtering),获取到集合中的最后一个元素:collection.{& expression}


9.在使用过滤操作时,我们通常都会使用#this,该表达式用于代表当前正在迭代集合中的对象(联想增强的for循环)


10.投影(projection):collection.{expression}


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


12.    parameters,#parameters.username

request,#request.username

session,#session.username

application,#application.username

attr,#attr.username

以上几个对象叫做命名对象


<%@ taglib prefix="s" uri="/struts-tags" %><%--  Created by IntelliJ IDEA.  User: Lu  Date: 14-1-2  Time: 下午2:40  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title></title></head><body>username:<s:property value="username"/><br>password:<s:property value="password"/><br>---------------------------------------<br/>username:<s:property value="#parameters.username"/><br>password:<s:property value="#parameters.password"/><br>---------------------------------------<br/>request:<s:property value="#request.hello"/><br>request:<s:property value="#session.hello"/><br>request:<s:property value="#application.hello"/><br>---------------------------------------<br>person1:address:<s:property value="list[0].address"/><br>person2:age:<s:property value="list[1].age"/><br>person1:cat1:name:<s:property value="list[0].cat.name"/><br>person1:size:<s:property value="list.size"/><br>isEmpty:<s:property value="list.isEmpty()"/><br>---------------------------------------<br> person2:friend3:<s:property value="list[1].friends[2]"/><br>----------------------------------------<br>person2:map2:<s:property value="list[1].map['hello2']"/><br>----------------------------------------<br>filtering:<s:property value="list.{? #this.name.length() >5}[0].name"/><br>----------------------------------------<br><s:iterator value="list.{? #this.name.length() >5}"><s:property value="name"/><br><s:property value="cat.color"/><br><s:property value="friends[0]"/><br></s:iterator>----------------------------------------<br>projection:<br><s:iterator value="list.{age}"><s:property/><br></s:iterator></body></html>


0 0