`
liuye066
  • 浏览: 266372 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

ognl表达式中的#、%和$

阅读更多

ognl表达式中的#、%和$
“#”主要有三种用途:
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};
   (1)投影:在一个集合中对每一个元素调用相同的方法,或抽取相同的属性,并将结果保存为一个新的集合
   如果employees是一个包含employee对象的列表,那么#employees.{name}将返回所有雇员的名字的列表
   在投影期间,使用#this变量来引用迭代中的当前元素。
  (2)过滤(选择):从集合中选择某些元素,并将结果保存到新的集合中。
   选择操作符有::选择满足条件的所有元素;
                     如:#employees.{?#this.salary>3000}返回薪水大于3000的所有雇员的列表;
                ^:选择满足条件的第一个元素;
                     如:#employees.{^#this.salary>3000}将返回第一个薪水大于3000的雇员的列表;
                $:选择满足条件的最后一个元素;
                    如:#employees.{$#this.salary>3000}将返回最后一个薪水大于3000的雇员的列表;
3. 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
   如果想指定创建的Map类型,可以在左花括号前指定Map实现的类名。例如:#@java.util.HashMap@{'foo1':'bar1','foo2':'bar2'}
   Map通过key来访问,如map['key']或map.key  
     
“%”符号的用途
“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值

<p><s:url value="#foobar['foo1']" /></p>

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

 

刷新页面,结果如下所示:
#foobar['foo1']?userName=Max+From+parameters;
bar1?userName=Max+From+parameters;

 

“$”有两个主要的用途
用于在国际化资源文件中,引用OGNL表达式,
在Struts 2配置文件中,引用OGNL表达式

<action name="AddPhoto" class="addPhoto">

    <interceptor-ref name="fileUploadStack" />        

   <result type="redirect">ListPhotos.action?albumId=${albumId}</result>

</action>

0
1
分享到:
评论

相关推荐

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

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

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

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

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

    在OGNL表达式中,`#`、`%`和``$`符号扮演着不同的角色,它们是OGNL语法的重要组成部分。下面将详细介绍这三个符号的用法。 1. `#`(哈希符号) `#`在OGNL中代表“上下文引用”或“值栈引用”。在Struts2中,请求...

    ognl表达式 ognl表达式

    #### 六、OGNL表达式在List和Map中的应用 OGNL不仅支持简单的属性访问,还支持复杂数据结构如List和Map的操作。 - **使用OGNL操作List**: ```jsp ,'xiaoi','liming'}"/&gt; &lt;s:iterator value="#list" id="n"&gt; ...

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

    本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...

    JS:ognl表达式

    ### JS:ognl表达式详解 #### 一、OGNL表达式概述 OGNL (Object-Graph Navigation Language) 是一种强大的表达式语言,用于获取和设置 Java 对象的属性。它最初是由 John Rose 和 Luke Blanshard 开发,并被广泛...

    OGNL表达式

    OGNL表达式作为一种强大且灵活的工具,极大地简化了Struts2框架中的数据访问和处理流程。通过对OGNL表达式的深入了解和掌握,开发者能够更加高效地构建复杂的Web应用程序,同时提高代码的可读性和可维护性。

    Struts2 使用OGNL表达式

    9. **OGNL在视图层的应用**:在JSP或其他视图技术中,可以通过OGNL表达式动态地显示和操作数据,如`${user.name}`。 10. **OGNL与拦截器**:Struts2的拦截器机制允许在执行Action之前或之后对数据进行处理,而OGNL...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    Struts2深入学习----OGNL表达式原理

    这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是一种强大的表达式语言,允许开发者通过简单的字符串表达式来访问和修改对象图。在Struts2中,OGNL用于在Action和...

    Struts2 如何使用OGNL表达式(三十八)

    总结来说,Struts2中的OGNL表达式是连接模型和视图的关键工具,它提供了一种强大且灵活的数据访问和操作方式。通过熟练掌握OGNL,开发者可以更高效地构建和维护Struts2应用,同时要注意防止潜在的安全风险。在实际...

    % # $ 的区别 及用法

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

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

    总结来说,`#`,`%`,`$`在OGNL表达式中分别扮演了不同的角色,`#`提供了对上下文对象的访问,`$`简化了对ValueStack中对象属性的引用,而`%`则在特定运算中发挥作用。理解这些符号的用法对于有效利用Struts2框架进行...

    表达式与言EL和OGNL

    当用户提交数据时,OGNL表达式会将数据保存到栈顶的对象中。完成业务逻辑后,栈顶的对象可以通过OGNL表达式获取并展示结果。 以下是一个简单的示例,演示了如何使用`OgnlValueStack`: ```java // 创建Action对象 ...

    struts2.0标签$ # %的区别

    - **用途**:主要用于将文本属性解析为OGNL表达式,适用于原本是OGNL表达式的场景。 - **注意事项**:对于已经是OGNL表达式的属性不起作用。 - **示例**: ```xml &lt;s:property value="%{username}" /&gt; ``` 这里`...

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

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。在给定的文档中,我们关注的是`#.%.$`这三种符号在OGNL中的用法。以下是它们的具体解释: 1. `#`:此...

    ognl表达式

    1. **表达式语法**:OGNL表达式通常由对象引用、属性访问、方法调用和运算符组成。例如,`user.name`表示访问用户对象的name属性,而`list[0].title`则表示访问列表的第一个元素的title属性。 2. **上下文(Context...

    Struts2的标签库及OGNL表达式语言

    开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['']`访问对象属性。例如,`object.property`和`object['property']`都是访问对象的`property`属性。当属性名包含特殊...

    ognl表达式案例

    总的来说,这个案例将帮助我们理解如何在Struts2中使用OGNL表达式来实现数据的展示和操作,以及如何通过Struts2的标签库更好地利用OGNL的功能。通过学习和实践,开发者可以提高Web应用程序的可维护性和灵活性。

    struts2中ognl表达式的理解和用法

    OGNL表达式可以在一个上下文中执行,这个上下文包含了变量和对象。在Struts2中,Action上下文就是OGNL的默认上下文,其中包含了Action实例和其他请求相关的对象。 三、OGNL与Struts2的结合 1. 表单绑定:Struts2...

Global site tag (gtag.js) - Google Analytics