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";
}
}
}
提交地址:
点击Debug链接.下面的图片中灰色背景的将显示出来, 还有很多. 抓图没办法全部抓下来.
可以发现,在值栈中,都是以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/
相关推荐
<param-value>/tmp/struts2-uploads</param-value> </context-param> ``` 最后,你可以创建一个简单的JSP页面作为视图,展示文件上传的结果,比如`success.jsp`和`error.jsp`,分别对应成功和失败的情况。 总结...
4. **Value Stack**: Struts2的Value Stack是一种数据存储和传递机制,它将Action对象、值栈中的Action Context以及OGNL(Object-Graph Navigation Language)结合在一起,简化了视图和模型之间的数据交互。...
3. **Action上下文(Action Context)**:`org.apache.struts2.dispatcher`包下的`ActionContext`类存储了请求处理过程中的上下文信息,如值栈(Value Stack)、session、request、response等。 4. **值栈(Value ...
在Struts2中,可以通过Action类的属性来接收请求参数。例如,创建一个名为`UserAction`的类,其中包含`username`和`password`属性,以及相应的getter和setter方法。当用户提交表单时,Struts2会自动将请求参数绑定到...
4. **Value Stack与OGNL**:Struts2使用Value Stack来管理请求和Action的属性,而OGNL(Object-Graph Navigation Language)作为表达式语言,用于在视图层获取和设置对象的属性。开发者会学习如何与Value Stack交互...
5. **值栈(Value Stack)** - Struts2的核心概念之一,用于存放Action对象和其他数据,方便视图层获取。 - Action可以直接将属性放入值栈,JSP可以通过OGNL表达式直接访问。 6. **OGNL(Object-Graph Navigation...
#### 四、Struts2中的拦截器 拦截器(interceptor)是Struts2的核心特性之一,用于扩展框架的功能。它们可以在执行Action前后进行拦截,并执行相应的操作。 ##### 4.1 拦截器的工作原理 - **注册**:在配置文件中...
当Action执行完成后,Struts2会自动将Value Stack中的数据传递给Velocity Context,Velocity引擎根据模板和Context中的数据生成动态HTML页面。 在"Velocity003"这个压缩包中,可能包含了一些关于如何在Struts2项目...
在 Struts2 中,可以通过实现Aware接口来获取 Response 对象。例如,要获取 HttpServletResponse 对象,需要实现 org.apache.struts2.interceptor.ServletResponseAware 接口。下面是一个示例代码: ```java ...
在Struts2中,OGNL上下文被扩展为一个更复杂的结构,包含request、session、application、context map、OgnlValueStack等层次。OgnlValueStack(或简称为value stack)是核心,它是一个栈结构,通常包含用户对象、...
需在`struts.xml`中添加`<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>`来启用Spring插件,并且可能需要配置扫描注解的路径。 - **Action注解**:Action...
在Struts2中,每个Action实例都有一个与之关联的ValueStack对象,该对象贯穿整个Action的生命周期。ValueStack不仅包含了Action对象本身,还可能包含其他辅助对象或数据,比如表单数据、验证错误等。 #### 获取...
下面将详细讲解如何在Struts2中实现自定义转换类。 首先,了解Struts2的转换机制。当Action中的字段与请求参数匹配时,Struts2会尝试找到一个合适的转换器来处理这个参数。默认情况下,Struts2通过Action上下文...
这篇学习笔记和测试源代码将深入探讨Struts2中的类型转换机制。 首先,了解为什么类型转换是必要的。在Web应用中,用户通过HTML表单提交的数据通常是字符串类型。然而,后台业务逻辑可能需要这些数据以其他类型存在...
可以输出值栈、StackContext 、ActionContext中的值。 push:将某个值放入值栈。 set:设置一个新的变量。 text:输出国际化信息。 url:生成一个URL地址。 表单标签: checkbox标签:复选框。 checkboxlist标签...
1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...
OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,而值栈则是OGNL工作的重要机制。这两者是Struts2框架的核心组件,使得数据绑定和动态方法调用变得更加便捷。 **OGNL:对象图导航语言** OGNL是...
本文档将详细介绍如何在Struts2框架中创建一个登录验证拦截器,以确保除了登录请求外,所有其他请求都会被拦截,并检查用户的登录状态。 #### 登录校验拦截器的工作原理 登录校验拦截器的主要作用是检查用户是否...
在Struts2中,拦截器是实现业务逻辑和表示层解耦的重要工具,它们允许开发者在请求到达Action之前或之后执行特定的操作。本示例主要探讨的是如何使用Struts2的拦截器来处理文件上传功能。 首先,我们来理解一下...