`
jiasongmao
  • 浏览: 667078 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

struts2中的ognl表达式

阅读更多
Struts 2支持以下几种表达式语言: 1.OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
2.JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
3.Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
4.Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。

Struts 2默认的表达式语言是OGNL
1.支持对象方法调用,如xxx.doSomeSpecial();
2.支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 |  值名],例如:@java.lang.String@format('foo %s', 'bar')或 @tutorial.MyConstant@APP_NAME;
3.支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
4.访问OGNL上下文(OGNL context)和ActionContext;
5.操作集合对象。


#、%和$这三个符号的使用


--------------------------------“#”主要有三种用途:---------------------------------------------------------------------
1.访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();
    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表达式的值  --------------------------------------------
    <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>



参考  http://lxj8495138.iteye.com/blog/263809
分享到:
评论

相关推荐

    struts2 中 OGNL表达式的使用

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

    Struts2 使用OGNL表达式

    以下是一些关于Struts2中OGNL表达式的关键知识点: 1. **基础语法**:OGNL表达式的格式通常为`object.property`或`object[index]`,用于访问对象的属性或数组/集合的元素。例如,`user.name`将获取名为`user`的对象...

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

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL表达式的理解和用法。 OGNL的全称是对象图导航语言,它的主要功能是在对象模型...

    struts2-OGNL表达式测试

    在Struts2中,OGNL表达式的用途广泛,包括但不限于以下几点: 1. **动作结果映射**:在struts.xml配置文件中,你可以使用OGNL来决定哪个动作方法将被调用,比如`${method}" /&gt;`,这里的`method`属性可以通过请求...

    struts2_OGNL表达式ActionContext及valuesStack

    本文将深入探讨Struts2中的OGNL表达式,ActionContext以及valuesStack。 首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样...

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

    本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的核心组成部分,它允许开发者在Action类和JSP页面之间灵活地传递和访问数据。在Action类中,你可以设置属性,然后在JSP页面上通过OGNL...

    精通struts2的ognl表达式

    ### 精通Struts2中的OGNL表达式 在深入探讨Struts2框架的核心功能时,理解并熟练掌握OGNL(Object-Graph Navigation Language)表达式的应用是至关重要的一步。OGNL是一种强大的表达式语言,它允许开发者通过简洁、...

    ognl表达式 ognl表达式

    #### 五、Struts2中的OGNL表达式实现机制 为了使EL表达式能够访问`ValueStack`中的数据,Struts2在`HttpServletRequest`的基础上封装了一个类——`StrutsRequestWrapper`。这个类重写了`getAttribute_r`方法,使其...

    struts2 OGNL表达式

    在Struts2中,OGNL被用作默认的表达式语言,用于在Action类和JSP页面之间传递数据,以及在Action上下文中进行动态方法调用。 在Struts2的配置文件中,如struts.xml或struts.properties,你可以看到OGNL表达式的使用...

    struts2 ognl表达式

    在Struts2中,OGNL表达式可以嵌入到各种基本标签中,如`s:textfield`, `s:property`, `s:action`等,以实现动态的数据展示和交互。例如,`&lt;s:property value="%{#session.user.name}" /&gt;`会将session中user对象的...

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

    本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的...

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

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于数据绑定和表示层的数据操作。这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是...

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

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1、 支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@...

    struts2 OGNL表达式使用

    struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...

    OGNL表达式

    - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" %&gt;`。 - **$**:在JSP页面中表示EL表达式的开头,但在...

    struts2中的OGNL的源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...

    struts2OGNL表达式ActionContext及valuesStack.pdf

    在Struts2中,OGNL表达式的使用大大提升了代码的可读性和维护性。 首先,`#`字符在OGNL中扮演着关键角色。它主要用于访问OGNL上下文和Action上下文。`#`前缀可以用来获取`ActionContext`,这包含了四个重要的域:...

    Struts2 通过ognl表达式实现投影

    Struts2 框架中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,主要用于在 Struts2 应用程序中进行数据绑定和投影。OGNL 表达式可以用于过滤、投影和排序数据。 在 Struts2 中,OGNL 表达式...

    struts2 OGNL 表达式及各种标签的使用

    本文将深入探讨OGNL的基本用法、标签的使用以及其在Struts2中的实际应用。 1. **OGNL基本概念** - OGNL是一种表达式语言,用于获取和设置对象属性。它支持点号和索引访问、方法调用、运算符、集合操作等。 - 例如...

    JS:ognl表达式

    - **框架集成**:许多 Java 框架,如 Struts2、Hibernate Validator 等,都集成了 OGNL 表达式用于数据绑定和验证。 - **模板引擎**:在模板引擎中使用 OGNL 表达式来动态渲染页面。 - **业务逻辑处理**:在复杂的...

Global site tag (gtag.js) - Google Analytics