理解STRUTS2标签:#,$,%的OGNL用法解析

需积分: 11 0 下载量 189 浏览量 更新于2024-09-15 收藏 56KB DOC 举报
"STRUTS2标签中符号_,$,%的用法示例" 在STRUTS2框架中,标签的使用极大地简化了视图层的开发,而#、$和%这三个符号在STRUTS2的OGNL(Object-Graph Navigation Language)表达式中扮演着重要的角色。本文将详细解释这三种符号的用法。 1. # 符号 #符号在OGNL表达式中主要用于以下三种情况: a. 访问非根对象的属性:在Struts2中,值栈被默认视为根对象,可以直接访问Action上下文中的属性。但当需要访问其他非根对象,如Session或Request中的属性时,需要使用#前缀。例如,`#session.msg`表示获取ActionContext中Session对象的msg属性。 b. 过滤和投影集合:在处理集合时,#可以用来筛选或提取满足特定条件的元素。如`persons.{?#this.age>20}`会返回persons集合中年龄大于20的对象。 c. 构造Map:`#{'foo1':'bar1', 'foo2':'bar2'}`创建了一个Map对象,键值对分别为'foo1'和'bar1','foo2'和'bar2'。 2. % 符号 %符号主要用在字符串类型的值需要参与计算的场合。在STRUTS2标签中,如果你的属性值是一个OGNL表达式,且需要将其作为字符串处理,就需要使用%符号。例如,在`s:url`标签中,`%{#foobar['foo1']}`会确保`#foobar['foo1']`的值被正确地解析为字符串,而`#foobar['foo1']`直接使用可能无法正确处理。 3. $ 符号 $符号有两个主要的应用场景: a. 在国际化资源文件中,$符号用于引用OGNL表达式。例如,`reg.agerange = 年龄必须在${min}至${max}之间`,这里的`${min}`和`${max}`会在运行时根据实际值替换。 b. 在Struts2的配置文件中,$同样用于引用OGNL表达式。比如在`<validators>`配置中,`<message>BAction-test校验:数字必须为${min}为${max}之间!</message>`,这里的`${min}`和`${max}`会根据配置的参数值动态填充。 总结起来,#、$和%是STRUTS2 OGNL表达式中的关键符号,它们帮助开发者灵活地处理对象属性、集合操作以及字符串和表达式的结合。了解并熟练掌握这些符号的用法,能显著提升开发效率,使得STRUTS2应用的视图层更加简洁和高效。