struts2笔记11-OGNL

1、OGNL

     Object-Graph Navigation Language,对象-图 导航语言,可以方便的操作struts2值栈对象

2、对象栈操作方法

(1)action普通属性的访问方法

    <s:property value="[n].pName"/>

    从对象栈第n个对象开始查找pName属性的值;

    <s:property value="[0].pName"/>,表示从栈顶对象开始查找,而从栈顶对象开始查找又可以省略索引;

    <s:property value="pName"/>,通常这么写,表示从栈顶对象开始查找pName,直到找到为止,若找不到则为"";

(2)action中的对象属性的访问方法

  假设action实例中有给person对象,则

    <s:property value="[n].person.personName"/>,表示从第n个栈中对象查找person.personName;

    同样,<s:property value="[0].person.personName"/>,表示从栈顶对象开始查找;

    省略掉[0],即为<s:property value="person.personName"/>

    也可以写成<s:property value="person['personName']"/>

    可以通过,<s:debug />标签进行查看

3、map栈访问方法

(1)session中属性的访问

     <s:property value="#session.product.pName"/>,其中product是一个实体对象;

(2)request中属性的访问

    <s:property value="#request.test.person.personName"/>,其中test对象中有一个person对象;

4、访问静态属性和静态方法

(1)静态属性访问

    <s:property value="@java.lang.Math@PI" />

(2)静态方法访问

    默认情况下静态方法不允许访问,需要设置一个常量值:

  <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

    <s:property value="@java.lang.Math@cos(0)"/>

5、访问实例方法

    <s:property value="[n].setpName('jerry')"/>,n表示从栈对象中第n个对象开始搜索setpName方法

    比如<s:property value="[0].setpName('jerry')"/>表示从栈顶对象开始搜索,省略掉[0],即

    <s:property value="setpName('jerry')"/>

6、数组的访问

 <%
 	String[] names=new String[]{"aa","bb","cc"};
 	request.setAttribute("names", names);
 %>

<s:property value="#attr.names.length"/>

<s:property value="#request.names[2]"/>

7、Map的访问

<%
 	Map<String,String> map1=new HashMap<String,String>();
 	
 	map1.put("AA", "a");
 	map1.put("BB", "b");
 	map1.put("CC", "c");
 	request.setAttribute("map1",map1);
 %>

<s:property value="#request.map1.size"/>

<s:property value="#attr.map1['AA']"/>

原文地址:https://www.cnblogs.com/sdnu/p/5357153.html