struts2 值栈的理解

之前工作中当遇到JSP在struts2取值的时候,对于# % 什么的使用一直处于不太明白的状态(虽然之前学习struts2的时候有学到过)。

今天再次遇到,整理一下。

struts2上下文如上图所示。其中值栈里的内容我们经常用到的主要就是当前action的属性值。可以用s:debug标签看到。

对于在JSP里取值栈里的值:<s:property value="artist.bio" />

值栈里的值是可以“升级”的,使用的是set标签,其中可以用scope指明要升级到的范围:<s:set name="artistName" value="artist.name" scope="session" />

这时候的取值:<s:property value="#session[‘artistName‘]" />

可以看到,在非值栈(context)取值会加上#,这个是ognl语法。

特别要提到struts2的iterator标签:<s:iterator value="deptVO" var="dept">

var定义的变量,不是在值栈里的,我猜测是在attr里面的(不确定,求大神指点。。。)。所以它的取值也需要加上#:<s:property value="#dept.manager.gender"/>

时间: 2024-11-10 00:57:21

struts2 值栈的理解的相关文章

struts2值栈ValueStack中都有哪些东西?

com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher.HttpServletResponse com.opensymphony.xwork2.ActionContext.name com.opensymphony.xwork2.ActionContext.application attr com.opensymphony.xwork2.ActionC

如何自学Struts2之Struts2值栈和OGNL语言[视频]

如何自学Struts2之Struts2值栈和OGNL语言[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95

(十)Struts2 值栈/OGNL

值栈是一组对象,按照提供的顺序存储以下这些对象: 序号 对象和说明 1 Temporary对象 实际中存在各种在页面执行期间创建的temporary对象.例如,JSP标签循环集合的当前迭代值. 2 Model对象 如果在struts应用程序中使用Model对象,则当前Model对象放在值堆栈上的action之前. 3 Action对象 这是指正在执行的当前action对象. 4 命名对象 这些对象包括#application,#session,#request,#attr和#parameters

Struts2 中的值栈的理解

通过对struts2的一段时间的接触,将自己对OGNL的核心值栈说说,值栈:简单的说,就是存放action的堆栈,当我们提交一个请求道服务器端 action时,就有个堆栈,如果action在服务器端进行跳转,所有action共用一个堆栈,当需要保存在action中的数据时,首先从栈顶开始 搜索,若找到相同的属性名(与要获得的数据的属性名相同)时,即将值取出,但这种情况可能出现找到的值不是我们想要的值,那么解决此问题需要用TOP语法 和N语法来进行解决. 当在客服端进行跳转时,当有请求提交到服务器

struts2值栈分析

前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta

struts2值栈存取数据小结(使用ognl表达式)

前言:使用ognl和struts2标签库的时候要在 jsp页面 中 加入这么一行 <%@ taglib uri="/struts-tags" prefix="s" %> struts(统一格式): <action name="ognl" class="com.demo.test1.OnglAction" method="ognl1"> <result name="og

Struts2 值栈总结(ValueStack)

1.获取值栈 1 //获取值栈的第一种方式 2 ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack"); 3 //获取值栈的第二种方式 4 ValueStack valueStack2 = ActionContext.getContext().getValueStack(); 5 System.out.println(valueSt

Debug查看Struts2中ExceptionMappingInterceptor拦截器怎么把ExceptionHolder放入值栈中,以及理解拦截器的工作原理。。。

1.小案例代码: jsp界面: <body> <s:property value="exceptionStack"/><br> <s:property value="exception"/><br> <s:property value="exception.getMessage"/> <form action="product-details.action&q

关于Struts2的值栈和OGNL的简单理解

1.值栈是什么? 值栈是对应每一个请求对象的内存数据中心.每次请求一个action生成一个狭义上的值栈(ValueStack).这个值栈存储了我们定义在action中的每个属性的值,这些属性必须有get和set方法,以致于我们可以在jsp页面中使用EL表达式. 2.值栈的作用: 值栈能够在线程安全的情况下提供公共的数据存取服务.当有请求到达时,struts会为每个请求创建一个新的值栈.值栈封装了一次请求所有需要操作的相关的数据. 3.值栈的内容: 在struts中是有广义和狭义值栈之分的.狭义值