标准ONGL 和 struts 2中的ONGL

本文深入解析OGNL符号的用途,包括访问对象、集合操作、构建映射、以及其他应用场景。同时,阐述了Struts框架中OGNL表达式的功能点,如字段访问、方法调用、数组和集合数据访问、投影与选择操作,以及如何在Struts配置文件和校验文件中应用OGNL表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ONGL符号说明

#用途:

1.用于访问ONGL中Context中非根对象.

<wbr> 例如:#session;#applicatoin;#parameter;#attr;#action</wbr>

2.用于集合操作的投影和选择.

<wbr> 例如:books.{?#this.price&lt;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> 例如:&lt;s:textfield value="%{#key.adminBean.name}"&gt;</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&lt;35}.{bookName}}<br> 5.支持lambda表达式 :[....],定义一个函数,并通过,调用该函数<br><wbr><wbr> #fact=:[#this&lt;35?#this:#this*#fact(#this-1)], #fact(50) </wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值