`
huanggege10
  • 浏览: 10679 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Struts2中的特殊符号$ ,# ,%

阅读更多

#:从actioncontext中取值,前面加上#
%:%{#username}百分号的作用就是将大括号中的值当成ognl表达式
$:用于在struts配置文件中

#、%和$符号在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′}” />

<p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>

<p>不使用%:<s:url value=”#foobar['foo1']” /></p>

<p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>

 

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>

总结:

    1.  在JSP页面中"%{"就表示OGNL表达式开始,"}"表示OGNL表达式结束

    2.  如果访问根对象中的对象和属性不用任何符号标志,如:%{Object.field}

    3.  访问特定Scope中的对象和属性用"#"来通知OGNL查询器,如:%{#request.object},当然OGNL很强大,在一个链中,前一个对象做为解释下一个对象的上下文。你可以任意扩展这个链,在链中也可以访问对象中的方法。

 

本文来自CSDN博客:http://blog.csdn.net/java_idea/archive/2010/02/23/5319084.aspx

分享到:
评论

相关推荐

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

    在Struts2中,OGNL(Object-Graph Navigation Language)是默认表达式语言,用于访问和操作对象的属性。在OGNL表达式中,`#`、`%`和``$`符号扮演着不同的角色,它们是OGNL语法的重要组成部分。下面将详细介绍这三个...

    STRUTS2标签中符号_,$,%的用法示例.doc

    在STRUTS2的标签中,`#`,`$`, `%`这三种特殊符号扮演着重要的角色,尤其是在处理OGNL表达式时。下面将详细解释这三个符号的用途。 1. `#` 符号: - **访问非根对象属性**:在STRUTS2中,ActionContext是默认的根...

    Struts2 $,#,%详解及实例代码

    `%`在Struts2中并不直接作为OGNL的一部分使用,但在一些特殊场合,例如在拦截器配置或者自定义插件中,`%`可能会用于路径拼接或者变量替换。 现在我们详细分析提供的代码片段: 1. `application`: `ActionContext....

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

    “$”符号在Struts2中主要用作OGNL表达式的起始标记,在模板文件(如JSP页面)中,它用于指示Struts2框架应该解析为OGNL表达式。 1. **模板文件中的应用**: - 示例:`reg.ageRange = $ {min} 到 $ {max}` - 解释...

    % # $ 的区别 及用法

    在Struts2中,`%` 主要用于表达式语言(EL)中的特殊用途,尤其是在处理OGNL表达式时。它主要用于处理HTML标签内的OGNL表达式。具体来说: - **用法**:`%{expression}` 表示一个OGNL表达式的计算结果。这个表达式...

    ONGL中(#.%.$)三种符号的用法.pdf

    本文将深入探讨OGNL中`#`,`%`,`$`这三个特殊符号的用法。 首先,`#`符号在OGNL中的主要作用是访问Stack Context中的值,以及创建和访问特定的命名对象。例如,`#parameters`对象可以用来获取HTTP请求参数,`#...

    struts2学习心得

    Struts2学习心得 本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-...

    STRUTS2获得作用域、参数响应对象及三种符号说明

    在Struts2中,`session`对象通常被封装成`SessionMap`的形式。获取`SessionMap`对象的方法有: ```java // 方法A Map session = ActionContext.getSession(); // 方法B Map session = (Map) ActionContext....

    struts2框架面试题及答案02

    ### OGNL表达式中的特殊符号 1. **#号**:表示从非Root对象中获取数据。例如,`#request.user`表示从request中获取名为user的对象。 2. **%号**:用于强制解析OGNL表达式或提供一个表达式的运行环境。例如,`%{#...

    struts2 标签 OGNL

    在Struts2中,OGNL被广泛用于访问Action中的属性,以及在视图层(如JSP)中绑定和操作数据。 首先,OGNL使得访问对象属性变得非常直观。它支持点符号(.)和方括号([''])两种方式来访问属性。例如,如果在Action...

    Java struts2 ongl 标签 jsp页面

    Java Struts2 OGNL(Object-Graph Navigation Language)标签是用于在JSP页面中动态地访问和操作Java对象的强大工具。以下是对这些知识点的详细解释: 1. **对象树的访问**: OGNL允许开发者通过点号(`.`)来遍历...

    ognl.rar_OGNL API_struts2 ognl api_struts2帮助文档

    在Struts2中,这个上下文通常包含ActionContext,包含了Action实例、请求、会话等信息。 3. **ValueStack**:Struts2的ValueStack是一个对象栈,它用于存放Action实例和其他数据。OGNL可以方便地从ValueStack中查找...

    struts2 井号,星号,百分号的含义和使用举例.doc

    最后,美元符号($)在Struts2中有两个主要用途。一是用于国际化资源文件,使得开发者可以在资源文件中引用OGNL表达式,以便根据用户语言设置动态显示内容。二是用于Struts2配置文件中,例如在定义结果类型(`...

    struts2 ognl表达式

    这里的`#`符号是Struts2中的特殊标记,代表动作上下文。 在Struts2中,OGNL表达式可以嵌入到各种基本标签中,如`s:textfield`, `s:property`, `s:action`等,以实现动态的数据展示和交互。例如,`...

    struts2_标签库

    在Struts2中,使用标签库通常需要在JSP页面上导入相应的标签库,例如: ```jsp &lt;%@taglib prefix="s" uri="/struts-tags" %&gt; ``` 这行代码引入了Struts2的核心标签库,并将前缀"s"分配给它,使得我们可以使用`s:`...

    Struts2_1000_CharacterEncoding

    在Web应用开发中,字符编码是至关重要的一环,特别是当用户输入的数据包含非ASCII字符(如中文、日文或特殊符号)时。如果编码不一致,可能会导致数据在传输过程中发生乱码。Struts2框架提供了多种方式来解决这个...

    struts2总结

    在Struts2中,处理一个表单内多个按钮的问题主要通过`s:submit`标签的`method`属性来实现。具体操作如下: 1. **使用`s:submit`标签中的`method`属性**:在每个按钮的`s:submit`标签中,可以通过`method`属性指定当...

    条形码值(struts2)

    在Struts2中,处理条形码值通常涉及以下几个方面: 1. **数据绑定**:Struts2的核心特性之一是数据绑定,它可以自动将表单提交的数据(如条形码值)绑定到Action类的属性。例如,如果用户输入的条形码值通过表单...

    struts2标签大全详解

    4. `&lt;s:component&gt;`:用于展示图形或特殊符号。 D部分: 1. `&lt;s:date&gt;`:格式化日期输出。 2. `&lt;s:datetimepicker&gt;`:日期时间选择器,用于输入日期和时间。 3. `&lt;s:debug&gt;`:显示应用程序的调试信息,包括值栈、...

Global site tag (gtag.js) - Google Analytics