转自:http://hi.baidu.com/golotus/blog/item/82e7ded4cf631807a08bb77f.html/cmtid/e3de75a46a9a11fb9152ee3e
struts2 OGNL,struts2 表达式语言,Struts2 中OGNL表达式的用法,Struts2 #,表达式语言的好处,Struts2 $,struts2 井号,星号,百分号
表达式语言主要有以下几大好处:
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>
分享到:
相关推荐
本文将详细介绍Struts2.0标签库中 `$`, `#`, `%` 的使用方法及其区别。 #### 二、Struts2.0 标签概述 ##### 1. 通用标签 - **Property** - 用于展示数据栈中的数据。 - 支持默认值设置。 - 可以控制HTML转义。...
在Struts2中,OGNL(Object-Graph Navigation Language)是默认表达式语言,用于访问和操作对象的属性。在OGNL表达式中,`#`、`%`和``$`符号扮演着不同的角色,它们是OGNL语法的重要组成部分。下面将详细介绍这三个...
### Struts2中#与$的区别及OGNL表达式的运用 #### 一、OGNL概述与Struts2中的角色 **OGNL**(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置Java对象图中的属性。在Struts2框架中,OGNL...
它在许多Java应用框架中得到了广泛应用,尤其是在Struts2中作为默认的表达式语言。OGNL中的`#`、`%`和`$`符号各有其独特的功能和应用场景,对于理解和熟练使用这些符号至关重要。 #### #符号的用途 1. **访问根...
### Struts2中#号的用法详解 在Struts2框架中,`#`符号是一种非常重要的语法元素,主要用于访问上下文中的变量。本文将详细介绍`#`符号的使用方法及其应用场景,帮助读者更好地理解和掌握Struts2框架的相关知识。 ...
### `% # $`的区别及用法 在Struts2框架中,`%`, `#`, `$` 这三...通过以上分析,我们可以看出 `%`, `#`, `$` 这三个符号在Struts2中的应用场景各有不同,合理选择和使用这些符号可以帮助开发者更高效地完成开发任务。
这里我们将深入探讨它们在Struts2中的用法,并通过一个具体的实例代码来阐述。 首先,`$`符号在Struts2的表达式语言(OGNL,Object-Graph Navigation Language)中用于访问对象的属性。在JSP页面中,`$`通常用来从...
- **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...
“$”符号在Struts2中主要用作OGNL表达式的起始标记,在模板文件(如JSP页面)中,它用于指示Struts2框架应该解析为OGNL表达式。 1. **模板文件中的应用**: - 示例:`reg.ageRange = $ {min} 到 $ {max}` - 解释...
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。在给定的文档中,我们关注的是`#.%.$`这三种符号在OGNL中的用法。以下是它们的具体解释: 1. `#`:此...
### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...
- **Struts2**: 相比之下,Struts2中的Action是多例的,每次请求都会创建一个新的Action实例,这样就避免了线程安全的问题。Struts2通过提供一个默认的基类`ActionSupport`,使得开发者可以很容易地继承这个类来创建...
- Struts2中的Action类更加灵活,可以是任意的Java对象(即POJO),只需实现`execute`方法即可。 - Struts2提供了`ActionSupport`基类,但不是强制性的,开发者可以选择是否继承它。 - Action类与Servlet API解耦,...
在Struts2框架中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。本文将深入探讨OGNL中`#`,`%`,`$`这三个特殊符号的用法。 首先,`#`符号在OGNL中的主要作用是...
表达式语言(EL)方面,Struts1使用JSTL EL,功能相对较弱,而在Struts2中,它支持更强大的OGNL,允许更灵活的对象图遍历和操作。 视图层的绑定方面,Struts1依赖标准JSP机制,而Struts2引入了ValueStack技术,使得...
值得注意的是,在Struts 2中,即使是简单的POJO(Plain Old Java Object)对象,只要包含`execute`方法,就可以作为Action使用。 #### 2. 线程模式方面的对比 - **Struts 1**:Action采用单例模式,这意味着所有...
### Struts2与Struts1的主要区别 #### Struts2架构设计与实现方式 - **Struts2**在设计上采用了更加灵活的方式,每个请求都对应一个实例化的Action对象,而不是像**Struts1**那样在整个请求周期内共享同一个Action...
- **访问非根对象属性**:在STRUTS2中,ActionContext是默认的根对象,但如果你需要访问像Session这样的非根对象,你需要使用`#`前缀。例如,`#session.msg`表示获取ActionContext的Session属性中的'msg'键的值,...