表达式语言主要有以下几大好处:
1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之类的语句,使页面更简洁;
2. 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能;
3. 简单明了地表达代码逻辑,使用代码更可读与便于维护。
Struts2 中OGNL表达式的用法:
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
“#”主要有三种用途:
1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
名称 作用 例子
parameters 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameter("id")
request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName")
session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName")
application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")
attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100};
3. 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
“%”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如在Ognl.jsp中加入以下代码:
<hr />
<h3>%的用途</h3>
<p><s:url value="#foobar['foo1']" /></p>
<p><s:url value="%{#foobar['foo1']}" /></p>
“$”有两个主要的用途 :
1. 用于在国际化资源文件中,引用OGNL表达式,例子请参考《在Struts 2.0中国际化(i18n)您的应用程序》
2. 在Struts 2配置文件中,引用OGNL表达式,如
<action name="AddPhoto" class="addPhoto">
<interceptor-ref name="fileUploadStack" />
<result type="redirect">ListPhotos.action?albumId=${albumId}</result>
</action>
分享到:
相关推荐
### OGNL中的#、%和$符号用法说明 #### 概述 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它在许多Java应用框架中得到了广泛应用,尤其是在Struts2中作为...
在OGNL表达式中,`#`、`%`和``$`符号扮演着不同的角色,它们是OGNL语法的重要组成部分。下面将详细介绍这三个符号的用法。 1. `#`(哈希符号) `#`在OGNL中代表“上下文引用”或“值栈引用”。在Struts2中,请求...
### `% # $`的区别及用法 在Struts2框架中,`%`, `#`, `$` 这三个符号有着不同的用途与含义。正确理解它们之间的差异有助于更好地使用Struts2进行开发工作。 #### 1. `%` 符号 在Struts2中,`%` 主要用于表达式...
根据提供的文件信息,我们可以深入探讨OGNL(Object-Graph Navigation Language)表达式中涉及的关键符号:#、% 和 $ 的具体用法与应用场景。 ### 一、符号“#”的应用 在OGNL表达式中,“#”这个符号主要用于访问...
- **用途**:主要用于将文本属性解析为OGNL表达式,适用于原本是OGNL表达式的场景。 - **注意事项**:对于已经是OGNL表达式的属性不起作用。 - **示例**: ```xml <s:property value="%{username}" /> ``` 这里`...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。在给定的文档中,我们关注的是`#.%.$`这三种符号在OGNL中的用法。以下是它们的具体解释: 1. `#`:此...
### Struts2中#与$的区别及OGNL表达式的运用 #### 一、OGNL概述与Struts2中的角色 **OGNL**(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置Java对象图中的属性。在Struts2框架中,OGNL...
在Struts2框架中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。本文将深入探讨OGNL中`#`,`%`,`$`这三个特殊符号的用法。 首先,`#`符号在OGNL中的主要作用是...
首先,`$`符号在Struts2的表达式语言(OGNL,Object-Graph Navigation Language)中用于访问对象的属性。在JSP页面中,`$`通常用来从Action上下文或ValueStack中获取对象的属性值。在提供的代码示例中,`${person....
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
在Struts2框架中,默认使用的表达式语言即为OGNL,这是因为相比于其他表达式语言(如JSTL、Groovy和Velocity等),OGNL具有以下显著优点: 1. **支持对象方法调用**:OGNL允许直接调用对象的方法,而无需显式创建...
在Struts2框架中,OGNL表达式被广泛应用于视图层,比如在JSP页面中用来获取数据。OGNL表达式的语法简洁明了,例如: - **直接调用方法**:`xxx.sayHello()`。 - **访问静态方法和常量**:`@java.lang.String@format...
在使用 OGNL 表达式时,需要注意“%”和“#”符号的区别。“%”符号用于告诉执行环境 %{} 里的是 OGNL 表达式,而“#”符号用于访问非根对象、过滤和投影集合、构造 Map 等。 此外,OGNL 表达式还可以用于操作集合...
### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...
camel-ognl-1.6.4.jar, camel-ognl-2.8.1.jar, com.springsource.org.ognl-2.6.9.jar, com.springsource.org.ognl-sources-2.6.9.jar, ognl-2.5.1.jar, ognl-2.6.11.jar, ognl-2.6.3.jar, ognl-2.6.5.jar, ognl-...
随着时间的发展,OGNL逐渐演变为处理复杂数据关系的语言,广泛应用于多个知名Web框架,如WebWork(Struts2的前身)和Tapestry。 OGNL的语法简洁而强大,其基本单位是“导航链”,它可以用来访问对象的属性、调用...
在Struts2框架中,OGNL(Object-Graph Navigation Language)和EL(Expression Language)都是用于数据绑定和表达式处理的重要工具,它们在处理视图层与模型层的数据交互方面发挥着关键作用。理解这两者的差异有助于...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...
OGNL 表达式是一种功能强大且灵活的工具,适用于各种 Java 应用程序。通过对 OGNL 表达式的深入理解和掌握,开发者可以更高效地处理对象图,实现更复杂的业务逻辑。无论是对于初学者还是经验丰富的开发者来说,掌握 ...
OGNL,全称为Object-Graph Navigation Language,是一种强大的开源表达式语言,主要用于便捷地操作对象的属性和方法。在Struts2框架中,OGNL作为默认的表达式语言发挥着核心作用,允许开发者以简洁的方式访问和修改...