`

ognl的三个符号的解释

阅读更多
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 符号的使用 OGNL(Object-Graph Navigation Language)是一...OGNL 表达式在 Struts2 中的使用非常广泛,开发者需要充分了解“%”、“#”、“$”这三个符号的使用规则,以便更好地使用 OGNL 表达式提高开发效率。

    ognl图形导航语言

    在使用OGNL表达式时,尤其是在Struts2的标签中,需要特别注意`#`、`%`这两个符号的使用。`#`符号有三个主要用途: 1. 访问非根对象,如OGNL上下文和Action上下文,`#`常用于访问ActionContext中的各种上下文属性。 ...

    OGNL中的#、%和$符号用法说明

    综上所述,`#`、`%`和`$`这三个符号在OGNL表达式中扮演着不同的角色,分别用于访问根对象属性、计算字符串类型的表达式值以及引用OGNL表达式。熟练掌握它们的用法可以帮助开发者更高效地利用OGNL表达式进行数据处理...

    OGNL教程,简单,看完懂OGNL语言

    在这里,`#`、`%`和`$`三个符号有特定的用途: 1. `#`:在Struts2中,`#`符号通常用于引用Action上下文中的值栈对象。例如,`#request`、`#session`和`#parameters`分别代表请求、会话和参数范围内的对象。此外,`#...

    OGNL语言中文资料

    1. **OGNL文档**:官方文档详尽解释了OGNL的所有特性和用法,是学习的首要资料。 2. **示例代码**:通过编写简单的Java应用程序或Web项目,结合OGNL表达式进行实战演练,能加深理解。 3. **在线工具**:一些在线的...

    ognl表达式java使用案例详解(测试通过)

    本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. ...主要是#、%和$这三个符号的使用;

    OGNL表达式

    在使用过程中,需要注意#、%和$这三个符号的正确使用: - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" ...

    Struts2 ognl中的#、%和$符号用法说明

    下面将详细介绍这三个符号的用法。 1. `#`(哈希符号) `#`在OGNL中代表“上下文引用”或“值栈引用”。在Struts2中,请求处理时会创建一个值栈,它包含了Action对象和其他相关数据。当我们使用`#`符号时,我们...

    struts2 ognl的用法

    OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现动态数据处理的核心技术之一。 OGNL的主要特点包括:...

    OGNL API文档

    1. 上下文(Context):OGNL在执行表达式时会维护一个上下文对象,存储变量和临时值。开发者可以自定义上下文来扩展OGNL的功能。 2. 环境(Environment):环境对象包含当前执行环境的信息,如类加载器、类型转换...

    struts2中OGNL的一些概念及原理说明

    **OGNL上下文**是Struts2框架中的一个重要概念,它指的是一个名为`ContextMap`的容器。这个容器是一个Map结构,其键为`String`类型,值为`Object`类型,用于封装所有请求过程中可能用到的数据。 1. **ContextMap的...

    OGNL使用小结

    首先,`#`符号在OGNL中有三个主要用途。一是访问OGNL上下文和Action上下文,比如`#parameters`、`#request`、`#session`和`#application`分别对应HTTP请求的参数、请求属性、会话属性和应用程序范围内的属性。`#attr...

    struts2 OGNL语言学习笔记

    在使用 OGNL 时,经常遇到的问题是 #、% 和 $ 这三个符号的使用。例如:&lt;s:property value="xx" /&gt; 等。 此外,在使用 Struts 2 时,需要注意乱码问题,解决方法是将编码方式设为“utf-8”,并在 web.xml 中配置 ...

    OGNL表达式中的#、%和$.txt

    综上所述,“#”、“%”和“$”这三个符号在OGNL表达式中的使用各有侧重。“#”主要用于访问不同作用域中的变量;“%”则是在XML配置文件中使用OGNL表达式的一种特殊语法;而“$”符号则主要用于模板文件中OGNL...

    OGNL语言指南

    - **属性**: 通过`.`符号来访问对象的属性,例如`headline.text`。 - **方法调用**: 可以直接调用对象的方法,如`hashCode()`。 - **数组索引**: 使用`[]`来访问数组或列表中的元素,如`listeners[0]`。 - **链式...

    OGNL表达归纳

    在Struts 2中,若要访问上下文(Context)中的对象,则需使用`#`符号来标注命名空间。例如,要访问`request`范围内的`name`属性,可以使用如下表达式: ``` #request.name ``` 这种方式极大地简化了对不同作用域...

    OGNL Language Guide 中文版

    #### 三、OGNL语法 - **基本概念**: - **导航链 (Chain)**: OGNL 表达式的最基本组成部分。链通常包括以下元素: - **常量**: 如数字或字符串。 - **属性引用**: 通过点符号访问对象属性,例如 `headline.text`。...

    Struts 2中的OGNL教程

    在使用 OGNL 时,需要注意几个符号的使用: - **#**:表示 OGNL 表达式的开始。 - **%**:用于定义 JSP 页面的脚本段。 - **$**:用于访问请求范围内的变量。 #### 五、示例:设置编码以避免乱码问题 在使用 ...

    ognl表达式详解

    在使用OGNL时,常常会遇到#、%和$这三个符号的使用问题。这些符号在OGNL中有特定含义: - `#`:用于引用OGNL上下文中的变量或方法。 - `%`:在Java字符串格式化中使用,如`String.format`方法。 - `$`:通常用来引用...

Global site tag (gtag.js) - Google Analytics