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

ognl ValueStack(值栈)

阅读更多

OGNL表达式语言的真正目的,是为了在那些不能写JAVA代码的地方执行JAVA代码,或者是为了更方便地执行JAVA代码:

1.Root对象

利用OGNL进行导航的代码如下:

//利用OGNL表达式访问
String value = (String)Ognl.getValue("group.org.orgId", user);

 Ognl.getValue()方法的第一个参数,就是一条OGNL表达式,第二个参数是指定在表达式中需要用到的root对象!

完整代码如下:

 public void testOgnl01() throws Exception{

       User user = new User();

       user.setUsername("张三");

       

       //利用OGNL表达式访问user对象的username属性

       String value = (String)Ognl.getValue("username", user);

       log(value);

    }

    

    public void testOgnl02() throws Exception{

       User user = new User();

       Group g = new Group();

       Organization o = new Organization();

       o.setOrgId("ORGID");

       g.setOrg(o);

       user.setGroup(g);

       

       //用JAVA来导航访问

       log(user.getGroup().getOrg().getOrgId());

       

       //利用OGNL表达式访问

       String value = (String)Ognl.getValue("group.org.orgId", user);

       log(value);

    }

    

    public void testOgnl03() throws Exception{

       User user = new User();

       Group g = new Group();

       Organization o = new Organization();

       o.setOrgId("ORGID");

       g.setOrg(o);

       user.setGroup(g);

       

       //用JAVA来导航访问

       log(user.getGroup().getOrg().getOrgId());

       

       //也可以在表达式中使用#root来代表root对象

       String value = (String)Ognl.getValue("#root.group.org.orgId", user);

       log(value);

    }

    private void log(Object o){

       System.out.println(o);

    }

 2. Context对象

在OGNL的表达式中,有可能需要访问到多个毫不相干的对象,这时候,我们需要给OGNL传递一个Map类型的对象,把表达式中需要用到的对象放到Map中即可!这个Map对象,称为context。

要在表达式中访问到context中的对象,需要使用“#对象名称”的语法规则。

http://blog.csdn.net/li_tengfei/archive/2010/12/25/6098134.aspx

分享到:
评论

相关推荐

    linjin101#javaStudy#Struts2中的OGNL和值栈ValueStack1

    1、什么是值栈 2、值栈的内部结构 3、ActionContext和ValueStatck的关系 4、如何获取值栈对象 5、向值栈存数据 6、从值栈中获取数据

    栈的简单代码

    栈是限制在表的一端进行插入和删除运算的线性表,插入、删除的这一端成为栈定,另一端为...Strtus2对OGNL进行了扩充,将值栈作为OGNL的根对象。 什么是值栈?符合先进后出的特点,能给valueStack值栈放入删除和查询的对象.

    Struts用的ognl和valueStack(vs)实例

    **Value Stack:值栈** Value Stack是Struts2的核心组件,它是一个后进先出(LIFO)的数据结构,用于存储Action对象和其他可操作的数据。Value Stack的主要作用有: 1. **数据容器**:所有的Action对象都被压入...

    ValueStack使用参考

    5. **获取值**:`ValueStack.getValue(String expression)` 获取栈中对象的属性值,同样使用OGNL表达式。 **四、ValueStack的优势** 1. **简化数据传递**:ValueStack通过统一的数据通道,简化了Action和视图之间...

    ognl表达式 ognl表达式

    `ValueStack`是一个存储数据的栈结构,包含了所有的模型对象以及请求、会话和应用范围的数据。开发者可以通过EL表达式直接访问`ValueStack`中的数据,例如: ```jsp ${foo} // 访问ValueStack中的foo ``` 需要注意...

    struts2中的ognl

    - 值栈(ValueStack)是Struts2处理请求的核心概念,它是一个对象栈,存放了请求处理过程中涉及的所有对象。使用OGNL时,通常配合Struts2的标签,比如`s:property`,通过值栈来访问和显示数据。 3. **EL与值栈的...

    OGNL百度百科OGNL百度百科

    #### 四、ValueStack (值栈) 在 Struts2 中,OGNL 需要与 ValueStack 进行交互,以方便在 JSP 页面中直接通过 EL 方式访问 ValueStack 中的对象。ValueStack 是一个保存所有请求数据的对象栈,它包含了一个或多个根...

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

    在Struts2的ActionContext中,OGNL查找值栈(ValueStack),这是一个存储所有请求相关对象的数据结构。值栈顶部的对象通常为Action实例,OGNL表达式会在此对象及其关联的对象图中查找属性。 Struts2的标签库也广泛...

    Struts2 & OGNL

    OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. **Action上下文(Action Context)**: OGNL还与Action Context关联,这是一个包含请求、会话和应用...

    在线培训:ValueStack

    ValueStack是Struts2框架的核心组件之一,它是一个存储ActionContext中的值的对象栈。ValueStack的主要功能是处理视图和模型之间的数据传递。在Struts2中,Action类的属性可以直接映射到JSP页面上的标签,这是因为...

    详解Java的Struts框架中栈值和OGNL的使用

    在Struts框架中,值栈(ValueStack)和OGNL(Object-Graph Navigation Language)是两个核心概念,它们极大地简化了数据传递和表示层的交互。 **值栈(ValueStack)** 值栈是一个基于栈的数据结构,用于存储应用...

    ognl的源码

    - 探究`ValueStack`的实现,研究其如何管理和操作栈中的对象。 - 研读`OgnlContext`的源码,掌握其如何维护执行上下文。 通过深入学习OGNL的源码,开发者不仅可以优化Struts2应用,还能更好地理解和利用其他使用...

    ognl.rar_OGNL API_struts2 ognl api_struts2帮助文档

    3. **ValueStack**:Struts2的ValueStack是一个对象栈,它用于存放Action实例和其他数据。OGNL可以方便地从ValueStack中查找和操作对象。 4. **OGNL表达式求值器(Evaluator)**:负责解析和执行OGNL表达式,返回...

    表达式与言EL和OGNL

    值堆栈是一个存储对象的栈结构,通常包含了请求处理过程中的所有相关对象,如Action对象。当用户提交数据时,OGNL表达式会将数据保存到栈顶的对象中。完成业务逻辑后,栈顶的对象可以通过OGNL表达式获取并展示结果。...

    Struts2中关于ValueStack的一些操作

    1、 ValueStack其实就是一个放置Java对象的堆栈而已,唯一特别的是可以使用EL来获得值堆栈中对象属性的数据,并可以为值堆栈的对象属性赋值。 2、 EL,全称Express Language,即表达式语言。不要被语言吓倒,它是...

    struts2标签和OGNL表达式

    栈顶对象是指在ValueStack(值栈)中位于最顶层的对象,ValueStack是一个特殊的对象列表,它包含了一系列的Action对象,便于OGNL查找和访问属性。 ValueStack是Struts2的核心组件,它是一个OgnlValueStack实例,...

    ognl 源码: struts2 所用的 ognl 包源码

    Struts2 的核心功能之一就是允许开发者通过 OGNL 表达式在 JSP 页面、Action 类以及值栈之间灵活地传递数据。 源码分析: 1. **OGNL 源码结构**: OGNL 的源码通常包含多个模块,如解析器(Parser)、编译器...

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

    当Action执行完毕后,其实例会被压入到值栈(ValueStack)中,同时session、request以及其他对象则放入Context Map。开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['...

    struts2 ognl源码

    - `ValueStack`是Struts2的核心组件,它存储了Action上下文中的所有对象,OGNL通过这个栈来查找和操作对象。 2. **值查找与设置**: - OGNL使用`ValueAccessor`接口来访问对象的属性。不同的类型(如POJO、Map等...

Global site tag (gtag.js) - Google Analytics