转自:http://hi.baidu.com/lnlele/blog/item/9ab55d53ce514f13377abe61.html、
OGNL表达式非常强大~其中#、%、$这三个符号在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′}” />
The value of key “foo1″ is <s:property value=”#foobar['foo1']” />
不使用%:<s:url value=”#foobar['foo1']” />
使用%:<s:url value=”%{#foobar['foo1']}” />
3.$符号
$符号主要有两个方面的用途。
在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
在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>
分享到:
相关推荐
OGNL表达式中的#、%和$.txt12312313213212312332212132
ognl表达式 ognl表达式 ognl表达式 ognl表达式
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
9. **OGNL在视图层的应用**:在JSP或其他视图技术中,可以通过OGNL表达式动态地显示和操作数据,如`${user.name}`。 10. **OGNL与拦截器**:Struts2的拦截器机制允许在执行Action之前或之后对数据进行处理,而OGNL...
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
JS:ognl表达式 JS:ognl表达式 JS:ognl表达式
这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是一种强大的表达式语言,允许开发者通过简单的字符串表达式来访问和修改对象图。在Struts2中,OGNL用于在Action和...
总结来说,Struts2中的OGNL表达式是连接模型和视图的关键工具,它提供了一种强大且灵活的数据访问和操作方式。通过熟练掌握OGNL,开发者可以更高效地构建和维护Struts2应用,同时要注意防止潜在的安全风险。在实际...
当用户提交数据时,OGNL表达式会将数据保存到栈顶的对象中。完成业务逻辑后,栈顶的对象可以通过OGNL表达式获取并展示结果。 以下是一个简单的示例,演示了如何使用`OgnlValueStack`: ```java // 创建Action对象 ...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。在给定的文档中,我们关注的是`#.%.$`这三种符号在OGNL中的用法。以下是它们的具体解释: 1. `#`:此...
ognl表达式在struts中的用法解析
1. **表达式语法**:OGNL表达式通常由对象引用、属性访问、方法调用和运算符组成。例如,`user.name`表示访问用户对象的name属性,而`list[0].title`则表示访问列表的第一个元素的title属性。 2. **上下文(Context...
开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['']`访问对象属性。例如,`object.property`和`object['property']`都是访问对象的`property`属性。当属性名包含特殊...
总的来说,这个案例将帮助我们理解如何在Struts2中使用OGNL表达式来实现数据的展示和操作,以及如何通过Struts2的标签库更好地利用OGNL的功能。通过学习和实践,开发者可以提高Web应用程序的可维护性和灵活性。
Action类的属性可以直接在JSP页面中通过OGNL表达式引用,如`${user.name}`。此外,OGNL也用于动态方法调用,例如 `${user.save()}` 可以调用Action中的`save`方法。 **3. 表单参数绑定** Struts2通过OGNL自动将表单...
- 在第29行、31行和33行,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别访问了request、session和application范围内的属性值。这里的`#`符号标识了表达式的开始,`...
在Struts2中,OGNL表达式可以嵌入到各种基本标签中,如`s:textfield`, `s:property`, `s:action`等,以实现动态的数据展示和交互。例如,`<s:property value="%{#session.user.name}" />`会将session中user对象的...
在本资源“OGNL表达式2讲”中,我们将深入探讨OGNL的使用,特别是针对各种常用的标签和实际应用案例。这个压缩包包含一个名为“OGNL”的文件,可能是一个文档或代码示例,用于辅助理解讲解内容。 1. **OGNL基础** ...
在“struts2-OGNL表达式测试”中,你可能会看到各种OGNL表达式的使用示例,比如访问和修改对象属性、动态调用方法、处理集合和执行条件判断等。通过这些测试,你可以更好地理解和掌握OGNL在实际开发中的运用,确保在...
Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。...通过研究这些内容,你可以更深入地理解和掌握Struts2框架中OGNL表达式的运用,以及如何在实际项目中确保其安全性和效率。