一、ONGL符号说明
#用途:
1.用于访问ONGL中Context中非根对象.
<wbr> 例如:#session;#applicatoin;#parameter;#attr;#action</wbr>
2.用于集合操作的投影和选择.
<wbr> 例如:books.{?#this.price<35}.{bookName}。表示选择价格小于35的所有书籍</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 其中?代表将所有符合条件的书籍PO</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> #this仅仅用于代表当前迭代的元素。<br><wbr><wbr><wbr><wbr><wbr><wbr> {}表示挑选出来组成一个子集合。<br><wbr><wbr><wbr><wbr><wbr><wbr> ^代表把符合条件的第一个元素提取出来,<br><wbr><wbr><wbr><wbr><wbr><wbr> 而$代表将符合条件的最后一个元素提取出来。<br><wbr><wbr><wbr><wbr><wbr><wbr> {bookName}用于将所有的书籍名称挑选出来组,成一个String的List。<br> 3.构建map对象.#{"key1":"value1","key2":"map2"..}<br> 4. 其他使用场景:#books[1]、 #foo["key"]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
%用于用途:
1.计算ognl表达式,将普通字符串转换为ognl表达式进行计算:
<wbr><wbr> 例如:<s:textfield value="%{#key.adminBean.name}"></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> %{books[1]}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
$主要用途:
1.在struts的配置文件srtruts.xml中引用数据:
<action name="login" class="com.sz.login" method="login">
<result name="success">index.jsp?username=${username}&password=${password}</result>
</action>
${username}、${password}表达式用于从ValueStack元素里获取响应属性值,访问过loginAction后,login就被放到vs的顶端,而vs又是OgnlContext的roo,所有就可以直接访问。
2.在struts的校验文件中,或国际化资源文件中
<field name="price">
<validator type="int">
<param name="min">50</param>
<param name="max">500</param>
<message>the price must between ${min} and ${max}</message>
</validator>
</field>
<wbr></wbr>
二、strutsOgnl功能点:
1.支持字段访问
<wbr><wbr> %{username}<br>
2.支持方法调用(包括静态方法调用)<br><wbr><wbr><a href="mailto:%%7B@@max(20,50">%{@@max(20,50</a>)} %{getUsername()} == %{username}<wbr> %{#manager.getWelcomeInfo()}<br>
3.支持数组、集合、map等对象数据的访问<br><wbr><wbr> %{foo[1]} %{infoMap["kk"]}<br>
4.支持投影、选择操作<br><wbr><wbr><wbr><wbr> %{books.{?#this.price<35}.{bookName}}<br>
5.支持lambda表达式 :[....],定义一个函数,并通过,调用该函数<br><wbr><wbr> #fact=:[#this<35?#this:#this*#fact(#this-1)], #fact(50) </wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>