1、“#”符号有三种用途:
(1)、访问非根对象(struts中值栈为根对象)如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属性,直到找到为止。用于过滤和投影(projecting)集合,如books.{?#this.price<100};构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
(2)、用于过滤和投影(projecting)集合,如: books.{?#this.price>35}
books.{?#this.price>35}
(3)、构造Map,如: #{'foo1':'bar1', 'foo2':'bar2'}
#{'foo1':'bar1', 'foo2':'bar2'}这种方式常用在给radio或select、checkbox等标签赋值上。如果要在页面中取一个map的值可以这样写:
<s:property value="#myMap['foo1']"/>
2、“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。
这是一开始最让我不能理解的符号,原因是一些相关资源在表述时不太准备,经过一翻痛苦的探索,终于明白了它的用途。实际上就是让被理解为字符串的表达式,被真正当成ognl来执行。很有点类似javascript里面的eval()功能,例如 :
var oDiv = eval("document.all.div"+index)
当index变量为1时,语句就会被当作var oDiv = document.all.div1 var oDiv = document.all.div1来执行。%{}就是起这个作用。举例:
<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>
<s:property value="#myMap['key1']"/>
<s:url value="#myMap['key1']" />
上面的代码第2行会在页面上输出“value1”,而第3行则会输出"#myMap['key1']"这么一个字符串。 如果将第3行改写成这样:
<s:url value="%{#myMap['key1']}"/>
则输出为“value1”。
这说明struts2里不同的标签对ognl的表达式的理解是不一样的。
如果当有的标签“看不懂”类似“#myMap['key1']”的语句时,就要用%{}来把这括进去,“翻译”一下了。
3、“$”有两种用途
(1)、在国际化资源文件中,引用OGNL表达式。
(2)、在Struts 2配置文件中,引用OGNL表达式:
<action name="saveUser" class="userAction" method="save">
<result type="redirect">listUser.action?msg=${msg}</result>
</action>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lntlky/archive/2009/10/16/4679225.aspx
分享到:
相关推荐
OGNL 符号的使用 OGNL(Object-Graph Navigation Language)是一...OGNL 表达式在 Struts2 中的使用非常广泛,开发者需要充分了解“%”、“#”、“$”这三个符号的使用规则,以便更好地使用 OGNL 表达式提高开发效率。
在使用OGNL表达式时,尤其是在Struts2的标签中,需要特别注意`#`、`%`这两个符号的使用。`#`符号有三个主要用途: 1. 访问非根对象,如OGNL上下文和Action上下文,`#`常用于访问ActionContext中的各种上下文属性。 ...
综上所述,`#`、`%`和`$`这三个符号在OGNL表达式中扮演着不同的角色,分别用于访问根对象属性、计算字符串类型的表达式值以及引用OGNL表达式。熟练掌握它们的用法可以帮助开发者更高效地利用OGNL表达式进行数据处理...
在这里,`#`、`%`和`$`三个符号有特定的用途: 1. `#`:在Struts2中,`#`符号通常用于引用Action上下文中的值栈对象。例如,`#request`、`#session`和`#parameters`分别代表请求、会话和参数范围内的对象。此外,`#...
1. **OGNL文档**:官方文档详尽解释了OGNL的所有特性和用法,是学习的首要资料。 2. **示例代码**:通过编写简单的Java应用程序或Web项目,结合OGNL表达式进行实战演练,能加深理解。 3. **在线工具**:一些在线的...
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. ...主要是#、%和$这三个符号的使用;
在使用过程中,需要注意#、%和$这三个符号的正确使用: - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" ...
下面将详细介绍这三个符号的用法。 1. `#`(哈希符号) `#`在OGNL中代表“上下文引用”或“值栈引用”。在Struts2中,请求处理时会创建一个值栈,它包含了Action对象和其他相关数据。当我们使用`#`符号时,我们...
OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现动态数据处理的核心技术之一。 OGNL的主要特点包括:...
1. 上下文(Context):OGNL在执行表达式时会维护一个上下文对象,存储变量和临时值。开发者可以自定义上下文来扩展OGNL的功能。 2. 环境(Environment):环境对象包含当前执行环境的信息,如类加载器、类型转换...
**OGNL上下文**是Struts2框架中的一个重要概念,它指的是一个名为`ContextMap`的容器。这个容器是一个Map结构,其键为`String`类型,值为`Object`类型,用于封装所有请求过程中可能用到的数据。 1. **ContextMap的...
首先,`#`符号在OGNL中有三个主要用途。一是访问OGNL上下文和Action上下文,比如`#parameters`、`#request`、`#session`和`#application`分别对应HTTP请求的参数、请求属性、会话属性和应用程序范围内的属性。`#attr...
在使用 OGNL 时,经常遇到的问题是 #、% 和 $ 这三个符号的使用。例如:<s:property value="xx" /> 等。 此外,在使用 Struts 2 时,需要注意乱码问题,解决方法是将编码方式设为“utf-8”,并在 web.xml 中配置 ...
综上所述,“#”、“%”和“$”这三个符号在OGNL表达式中的使用各有侧重。“#”主要用于访问不同作用域中的变量;“%”则是在XML配置文件中使用OGNL表达式的一种特殊语法;而“$”符号则主要用于模板文件中OGNL...
- **属性**: 通过`.`符号来访问对象的属性,例如`headline.text`。 - **方法调用**: 可以直接调用对象的方法,如`hashCode()`。 - **数组索引**: 使用`[]`来访问数组或列表中的元素,如`listeners[0]`。 - **链式...
在Struts 2中,若要访问上下文(Context)中的对象,则需使用`#`符号来标注命名空间。例如,要访问`request`范围内的`name`属性,可以使用如下表达式: ``` #request.name ``` 这种方式极大地简化了对不同作用域...
#### 三、OGNL语法 - **基本概念**: - **导航链 (Chain)**: OGNL 表达式的最基本组成部分。链通常包括以下元素: - **常量**: 如数字或字符串。 - **属性引用**: 通过点符号访问对象属性,例如 `headline.text`。...
在使用 OGNL 时,需要注意几个符号的使用: - **#**:表示 OGNL 表达式的开始。 - **%**:用于定义 JSP 页面的脚本段。 - **$**:用于访问请求范围内的变量。 #### 五、示例:设置编码以避免乱码问题 在使用 ...
在使用OGNL时,常常会遇到#、%和$这三个符号的使用问题。这些符号在OGNL中有特定含义: - `#`:用于引用OGNL上下文中的变量或方法。 - `%`:在Java字符串格式化中使用,如`String.format`方法。 - `$`:通常用来引用...