Struts2 笔记总结


一.OGNL中的#、%和$符号



1.#符号的三种用法
   1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute("msg") 。
   2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。
   3) 用来构造Map,例如示例中的#{'foo1':'bar1', 'foo2':'bar2'}。


   
   
2.%符号
  
  %符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。如下面的代码所示:


  先构造map:  <s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
  
  


(1)<p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>
The value of key "foo1" is bar1   (<s:property/>标签的value 属性是 OGNL表达式 )

    
(2)
<p>不使用%:<s:url value="#foobar['foo1']" /></p>
<p>使用%:<s:url value="%{#foobar['foo1']}" /></p>


运行界面如下所示。


不使用%:#foobar['foo1']
使用%:bar1





. 关于Struts2标签库属性值的%与#号的关系: 


1). 如果标签的属性值是OGNL表达式,那么无需加上%{}。 
2). 如果标签的属性值是字符串类型,那么在字符串当中凡是出现的%{}都会被解析成OGNL表达式,解析完毕后再与其他的字符串进行拼接构造出最后的字符串值。 
3). 我们可以在所有的属性值上加%{},这样如果该属性值是OGNL表达式,那么标签处理类就会将%{}忽略掉。 
最后一起用代码说话,简单的看一下ognl操作的示例:






3.$符号
$符号主要有两个方面的用途。
     1) 在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
     2) 在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>









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值