struts2 OGNL(Object-Graph Navigation Language) 井号,星号,百分号

1.“#”主要有三种用途:
  • 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();可以访问这几个ActionContext中的属性。
parameters
#parameters.id[0]作用相当于request.getParameter("id")
request
#request.userName相当于request.getAttribute("userName")
session
#session.userName相当于session.getAttribute("userName")
application
#application.userName相当于application.getAttribute("userName")
attr按request > session > application顺序
#attr.userName相当于按顺序在以上三个scope内读取属性,直到找到为止
  • 用于过滤和投影(projecting)集合,如books.{?#this.price<100}。
  • 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'},在select和radio标签中经常用到。

 

2.“%”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。 如:

     

 1 在Action中加入
 2 //省略set/get
 3 private Map<String,String> testmap=new HashMap<String,String>();   
 4 
 5 在execute中加入:
 6  //ActionContext中的testmap      
 7         testmap.put("mp1", "vsmap1");
 8         testmap.put("mp2", "vsmap2");
 9         testmap.put("mp3", "vsmap3");
10         testmap.put("mp4", "vsmap5555");
11         
12 
13 在结果页面加入:
14 
15 
16 遍历actionContext中的testmap<p>
17         <s:iterator value="testmap">
18             <s:property value="key"/>=<s:property value="value" /><br>
19         </s:iterator>
20         
21         <h3>-----------------s:property--------------------------%的用途</h3>                 //property 有没%号都一样。解析为value值
22         <p>用点号. :<s:property value="testmap.mp1"/></p>
23         <p>用方括号[] :<s:property value="testmap['mp1']"/></p>
24         <p>有%号:<s:property value="%{testmap['mp1']}" /></p>
25         
26         <h3>-----------------s:url--------------------------%的用途</h3>
27         <p>用点号. :<s:url value="testmap.mp1"/></p>
28         <p>用方括号[] :<s:url value="testmap['mp1']"/></p>                  //直接显示为testmap['mp1']
29         <p>有%号:<s:url value="%{testmap['mp1']}" /></p>

结果如下:

 

3.“$”有两个主要的用途

  • 用于在国际化资源文件中,引用OGNL表达式。 
  • EL表达式 ${sessionScope.user.sex}等于${sessionScope.user["sex"]} 。

       如果没有指定scope,那么${username}查找顺序是Page---Request---Session---Application

 

 


posted @ 2013-08-09 14:11  等风来。。  Views(389)  Comments(0Edit  收藏  举报
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------