`

Struts2中的Value Stack/Stack Context

阅读更多

Value stack栈中的值:

每一个动作在执行相应方法之前,都会创建一个value stack的对象。value stack用来保存这个动作对象和其他对象。

可以使用el表达式和Struts2标签进行对值栈的访问:

使用Struts2标签,需要引入标签库:

<%@taglib prefix="s" uri="/struts-tags"%>

   

<body>

       ${errors.name[0]}

       <br />

       <s:property value="errors.name[0]" />

       <s:debug /><!-- debug标签会将页面访问到的栈值通过一个a标签显示出来 -->

    </body>

 

Action中进行简单的数据校验:

package actions;

 

import com.opensymphony.xwork2.ActionSupport;

import enetitys.User;

 

public class UserAction extends ActionSupport {

   

    private User user;

   

    public User getUser() {

       return user;

    }

 

    public void setUser(User user) {

       this.user = user;

    }

 

    public String add(){

       System.out.println("name="+user.getName());

       System.out.println("admin".equals(user.getName()));

       if("admin".equals(user.getName())){

           return SUCCESS;

       }else{

           this.addFieldError("name", "该用户不存在!"); //添加一个属性错误.

           return "error";

       }

    }  

}

 

提交地址:

Struts2中的Value Stack/Stack Context - 盡頭 - 深山憨娃

点击Debug链接.下面的图片中灰色背景的将显示出来, 还有很多. 抓图没办法全部抓下来.

Struts2中的Value Stack/Stack Context - 盡頭 - 深山憨娃

可以发现,在值栈中,都是以Map形式存储的值,actionErrors存储的是action的错误.fieldErrors存储的属性错误.errors包含这两者.

 

 

看下面的Stack Context.顾名思义,栈的上下文环境.

访问的时候,通过#key来访问.如下:假设request中有名为obj属性的值.使用OGNL表达式访问.

<s:property value="#request.obj” />这样就可以取到stack Context中的值.

 

 

 

value stack contents   ognl 值栈
stack context           action上下文

action上下文是一个map对象,通过#key获得对象内容,在#request又可以得到值栈,值栈里存储的是一些action里的变量
于是获得action变量内容有三种方式
1,从值栈中直接获得
<s:property value="type"/>
${type }
2,从action上下文获得值栈的属性
<s:property value="#request['type']"/>或者<s:property value="#request.type"/>

 

 

来自:http://blog.163.com/fengzhisha0914@126/blog/static/150314785201071562220206/

分享到:
评论
2 楼 haige18 2011-04-06  
这两张图片引用的是网易的地址,现在资源有可能被删除了,所以就显示不出来了
1 楼 fengzhisha0914 2011-04-01  
我的图片也不显示了..为何...

相关推荐

    struts2-core-2.0.11源码

    3. **Action上下文(Action Context)**:`org.apache.struts2.dispatcher`包下的`ActionContext`类存储了请求处理过程中的上下文信息,如值栈(Value Stack)、session、request、response等。 4. **值栈(Value ...

    java struts2 上传

    &lt;param-value&gt;/tmp/struts2-uploads&lt;/param-value&gt; &lt;/context-param&gt; ``` 最后,你可以创建一个简单的JSP页面作为视图,展示文件上传的结果,比如`success.jsp`和`error.jsp`,分别对应成功和失败的情况。 总结...

    struts2深入详解

    4. **Value Stack**: Struts2的Value Stack是一种数据存储和传递机制,它将Action对象、值栈中的Action Context以及OGNL(Object-Graph Navigation Language)结合在一起,简化了视图和模型之间的数据交互。...

    Struts2学习笔记2012

    在Struts2中,可以通过Action类的属性来接收请求参数。例如,创建一个名为`UserAction`的类,其中包含`username`和`password`属性,以及相应的getter和setter方法。当用户提交表单时,Struts2会自动将请求参数绑定到...

    开发者突击 struts2 第二章 源代码

    4. **Value Stack与OGNL**:Struts2使用Value Stack来管理请求和Action的属性,而OGNL(Object-Graph Navigation Language)作为表达式语言,用于在视图层获取和设置对象的属性。开发者会学习如何与Value Stack交互...

    Struts2知识点总结

    5. **值栈(Value Stack)** - Struts2的核心概念之一,用于存放Action对象和其他数据,方便视图层获取。 - Action可以直接将属性放入值栈,JSP可以通过OGNL表达式直接访问。 6. **OGNL(Object-Graph Navigation...

    Struts2框架基础 二

    #### 四、Struts2中的拦截器 拦截器(interceptor)是Struts2的核心特性之一,用于扩展框架的功能。它们可以在执行Action前后进行拦截,并执行相应的操作。 ##### 4.1 拦截器的工作原理 - **注册**:在配置文件中...

    Struts2&&Velocity

    当Action执行完成后,Struts2会自动将Value Stack中的数据传递给Velocity Context,Velocity引擎根据模板和Context中的数据生成动态HTML页面。 在"Velocity003"这个压缩包中,可能包含了一些关于如何在Struts2项目...

    Struts2在Action中获得Response对象的四种方法

    在 Struts2 中,可以通过实现Aware接口来获取 Response 对象。例如,要获取 HttpServletResponse 对象,需要实现 org.apache.struts2.interceptor.ServletResponseAware 接口。下面是一个示例代码: ```java ...

    struts2_OGNL表达式ActionContext及valuesStack

    在Struts2中,OGNL上下文被扩展为一个更复杂的结构,包含request、session、application、context map、OgnlValueStack等层次。OgnlValueStack(或简称为value stack)是核心,它是一个栈结构,通常包含用户对象、...

    struts2和spring3注解整合问题

    需在`struts.xml`中添加`&lt;constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/&gt;`来启用Spring插件,并且可能需要配置扫描注解的路径。 - **Action注解**:Action...

    struts2框架面试题及答案02

    在Struts2中,每个Action实例都有一个与之关联的ValueStack对象,该对象贯穿整个Action的生命周期。ValueStack不仅包含了Action对象本身,还可能包含其他辅助对象或数据,比如表单数据、验证错误等。 #### 获取...

    struts2自定义编写转换类

    下面将详细讲解如何在Struts2中实现自定义转换类。 首先,了解Struts2的转换机制。当Action中的字段与请求参数匹配时,Struts2会尝试找到一个合适的转换器来处理这个参数。默认情况下,Struts2通过Action上下文...

    struts2的学习笔记+测试源代码

    这篇学习笔记和测试源代码将深入探讨Struts2中的类型转换机制。 首先,了解为什么类型转换是必要的。在Web应用中,用户通过HTML表单提交的数据通常是字符串类型。然而,后台业务逻辑可能需要这些数据以其他类型存在...

    struts2 标签库 帮助文档

    可以输出值栈、StackContext 、ActionContext中的值。 push:将某个值放入值栈。 set:设置一个新的变量。 text:输出国际化信息。 url:生成一个URL地址。 表单标签: checkbox标签:复选框。 checkboxlist标签...

    Struts2 & OGNL

    1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...

    struts2--3.Ognl与值栈

    OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,而值栈则是OGNL工作的重要机制。这两者是Struts2框架的核心组件,使得数据绑定和动态方法调用变得更加便捷。 **OGNL:对象图导航语言** OGNL是...

    Struts2拦截器实例.docx

    本文档将详细介绍如何在Struts2框架中创建一个登录验证拦截器,以确保除了登录请求外,所有其他请求都会被拦截,并检查用户的登录状态。 #### 登录校验拦截器的工作原理 登录校验拦截器的主要作用是检查用户是否...

    Struts2拦截器上传例子

    在Struts2中,拦截器是实现业务逻辑和表示层解耦的重要工具,它们允许开发者在请求到达Action之前或之后执行特定的操作。本示例主要探讨的是如何使用Struts2的拦截器来处理文件上传功能。 首先,我们来理解一下...

Global site tag (gtag.js) - Google Analytics