OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
表达式语言主要有以下几大好处:
1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之类的语句,使页面更简洁;
2. 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能;
3. 简单明了地表达代码逻辑,使用代码更可读与便于维护。
#的用途
(1)访问OGNL上下文中的parameters、request、session、application和attr对象。
(2)构造Map,如:#{key1:value1,key2:value2,key3:value3,......}
(3)用于过滤和投影(projecting)集合, 取得集合中的子集,如:
books.{?#this.price > 20} 符合条件的所有元素
books.{^#this.price > 20} 符合条件的第一个元素
books.{$#this.price > 20} 符合条件的最后一个元素
%的用途
在标志的属性为字符串类型时,计算OGNL表达式的值。例如在Ognl.jsp中加入以下代码:
<hr />
<h3>%的用途</h3>
<p><s:url value="#foobar['foo1']" /></p>
<p><s:url value="%{#foobar['foo1']}" /></p>
$有两个主要的用途
$符号主要有两个方面的用途。
在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
在Struts 2框架的配置文件中引用OGNL表达式,例如下面的代码片断所示:
<validators>
<field name=”intb”>
<field-validator type=”int”>
<param name=”min”>10</param>
<param name=”max”>100</param>
<message>BAction-test校验:数字必须为${min}为${max}之间!</message>
</field-validator>
</field>
</validators>
总结: OGNL是一种功能很大的表达式语言,熟悉它可以使我们的开发变得更快捷。
- 2楼xiaowenit昨天 22:52
- 对这节符号了解了
- 1楼maowenli昨天 13:17
- % 说的比较模糊
- Re: emoven昨天 13:20
- 回复maowenlin老实说 我也比较模糊 要去查一下资料