STRUTS2中_,$,%符号详解及应用场景

3星 · 超过75%的资源 需积分: 11 4 下载量 187 浏览量 更新于2024-10-03 收藏 56KB DOC 举报
在Struts2标签中,符号#、%、$具有特殊的用途和用法,对于理解这些符号在OGNL表达式中的功能至关重要。本文将对这些符号进行详细介绍。 1. **#符号**: - **访问非根对象属性**:在Struts2中,由于值栈被视为根对象,通过#前缀可以访问其他非根对象。例如,#session.msg等价于ActionContext.getContext().getSession().getAttribute("msg"),表示获取session中的msg属性。 - **过滤和投影集合**:当在遍历或操作集合时,如persons列表,#this.age>20用于筛选满足条件的元素,执行投影操作。 - **构造Map**:在表达式#{'foo1': 'bar1', 'foo2': 'bar2'}中,#用于创建一个键值对的Map。 2. **%符号**: - **字符串类型的标志属性**:%符号在字符串属性中用于计算OGNL表达式的值。如在<s:set>标签中,%{#foobar['foo1']}代替#foobar['foo1'],使得属性值能够动态计算。 3. **$符号**: - **国际化资源文件**:在国际化资源文件中,$符号用于引用OGNL表达式,如reg.agerange = 国际化信息:年龄必须在${min}和${max}之间,这里的${min}和${max}会被实际的OGNL表达式替换为对应的值。 - **配置文件中的OGNL引用**:在Struts2验证器配置中,如<paramname=”min”>10</param><paramname=”max”>100</param>,$符号被用于动态设置参数值,message标签中的${min}和${max}也会根据配置中的OGNL表达式动态显示错误消息。 理解并熟练运用这些符号是Struts2开发中不可或缺的一部分,可以帮助开发者更有效地处理数据绑定、国际化和配置管理,提高代码的灵活性和可维护性。在实际项目中,开发者需要根据具体场景选择合适的符号,确保OGNL表达式的正确性和性能。