struts2 ognl tags标签总结
?
?
OGNL要结合struts2标签来使用,下面是总结:
1、“#”符号有三种用途:
? (1) 得到上下文对象
? 名称作用例子
application
包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")???? attr用于按 request > session > application 顺序访问其属性(attribute )#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止。? (2) 用于过滤和投影(projecting)集合,如:?books.{?#this.price>35}?
??(3)构造Map,如:?#{'foo1':'bar1',?'foo2':'bar2'}?
?????????? #{'foo1':'bar1',?'foo2':'bar2'}这种方式常用在给radio或select、checkbox等标签赋值上。如果要在页面中取一个??? map的值可以这样写:? ??
??
? <s:property?value="#myMap['foo1']"/>?? ??
??
? <s:property?value="#myMap['foo1']"/>
2. “%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。
??? 如:<s:set?name="myMap"?value="#{'key1':'value1','key2':'value2'}"/>???
???????????? <s:url?value="%{#myMap['key1']}"/>??
3、“$”有两种用途 ??
??
(1)、在国际化资源文件中,引用OGNL表达式。 ??
??
(2)、在Struts?2配置文件中,引用OGNL表达式:? ??
??
<action?name="saveUser"?class="userAction"?method="save"> ??
??
<result?type="redirect">listUser.action?msg=${msg}</result> ??
??
</action> ??
??
<action?name="saveUser"?class="userAction"?method="save">???? ??
??
<result?type="redirect">listUser.action?msg=${msg}</result> ??
??
</action>?