`

struts2中如何引用值栈中的对象

阅读更多
在jsp页面是直接面向值栈操作,所以值栈的内容可以直接用名字来引用。值栈外的如session就要用OGNL语法中的#来操作。
    对于值栈来说,struts2有专门的tag叫<s:property >来引用值栈内容,如下例:
<s:property value="artist.bio" />session是值栈外的(全局的,或称根级别),所以要用OGNL的#符号表达式来引用session里的对象,如<s:property value="#session['artistBio']" />
    可以先把一个变量级别升高成为全局,然后用#符号来引用值,那么用s:set标签来做,如
<s:set name="artistName" value="artist.name" /> 
<s:set name="artistBio" value="artist.bio" /> 
<b>Album Title :</b> <s:property value="title" /> <br>
<b>Artist Name :</b> <s:property value="#artistName" />
<br> <b>Artist Bio :</b> <s:property value="#artistBio" /> 

===》级别高了,不在值栈内就不能直接引用了。。。。。需要加#号
   假如想让对象不但级别高了(全局的)在整个session周期内持久,就要加上scope,如
<s:set name="artistName" value="artist.name" scope="session" />
<s:set name="artistBio" value="artist.bio" scope="session" />
<b>Album Title :</b> <s:property value="title" /> <br>
<b>Artist Name :</b> <s:property value="#session['artistName']" /> <br>
<b>Artist Bio :</b> <s:property value="#session['artistBio']" /> <br>

   下面还有push标签,用来把对象放到值栈顶端:
<b>Album Title :</b> <s:property value="title" /> <br>
<s:push value="artist">
<b>Artist Name :</b> <s:property value="name" /> <br>
<b>Artist Bio :</b> <s:property value="bio" /> <br>
</s:push>
那么<s:bean>这个标签,用来在页面实例化一个bean放在值栈中,它的生存周期就是到了</s:bean>为止就结束了,所以说假如要用<s:property>这个标签来引用该bean的属性的话,一定要在<s:bean>和</s:bean>标签之中用。如下面例子:
<s:bean name="vaannila.CurrencyConverter"> 
    <s:param name="dollars" value="100" /> 
100Dollars = 
<s:property value="rupees" />
Rupees
</s:bean>
那么假如在bean标签之外引用呢,因为这时候这个bean的生命周期结束了,已经不在值栈内了,所以要用的话,需要事先在前面bean的声明地方加上一个变量声明,使其成为全局的对象,然后再像引用session变量那样的方式来引用它,如下例:
<s:bean name="vaannila.CurrencyConverter" var="converter"> 
<s:param name="dollars" value="100"></s:param>
</s:bean>
100 Dollars =
<s:property value="#converter.rupees" />
Rupees

分享到:
评论

相关推荐

    Struts2值栈的理解

    Struts2 值栈是 Struts2 框架中的一种核心机制,负责存储和管理 Action 中的数据。在 Struts2 中,每个 Action 类都有一个 ValueStack 对象,该对象贯穿整个 Action 的生命周期。在 Struts2 接收到一个.action 的...

    struts2--3.Ognl与值栈

    值栈是Struts2中的一个核心概念,它是一个基于栈的数据结构,用于存储Action实例和其他相关对象。值栈的主要作用是简化数据的管理,提供了一种将Action与视图解耦的方式。 1. **Action上下文**:每个Action实例在值...

    Struts2 Struts2 超好的Struts2 pdf 文档

    6. **值栈(Value Stack)**:值栈是Struts2中的一个核心组件,它存储了请求中的所有对象。ActionContext提供了对值栈的访问,使得视图能够方便地获取和展示数据。 7. **Freemarker和Velocity模板**:Struts2支持...

    马士兵Struts2笔记2013

    在Struts2中,你可以创建领域对象,通过setter和getter方法来接收和设置请求参数,这些对象可以在多个Action之间共享,提高了代码的复用性。 4. **Struts2_2.1.6版本的中文问题** 在某些版本的Struts2中,可能出现...

    Struts2_OGNL

    值栈是Struts2框架中的核心概念之一,它是一个用于临时存储对象的栈结构,这些对象包括Action实例、模型对象、临时对象等。值栈中的对象可以按照以下四种类型划分: 1. 栈顶对象:在程序执行过程中,由容器自动创建...

    struts2 OGNL之&lt;s:property&gt;标签访问值栈(value stack)用法

    在这个主题中,我们将深入探讨OGNL(Object-Graph Navigation Language)以及如何通过`&lt;s:property&gt;`标签来访问Struts2中的值栈(Value Stack)。值栈是Struts2中一个核心的概念,它是一个存储用户请求数据和应用...

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

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

    Struts2环境配置与基本操作演示

    接下来,我们来谈谈**OGNL**,它是Struts2中的表达式语言,用于访问和操作对象图。OGNL可以方便地在视图层和模型层之间传递数据。例如,你可以使用OGNL在JSP页面中直接访问Action类的属性,或者在Action类中设置请求...

    struts2核心技术整理

    1. **Action**:在Struts2中,Action类是业务逻辑的载体,负责处理用户请求。Action类通常会实现`com.opensymphony.xwork2.Action`接口或其子接口,如`ActionSupport`,并重写`execute()`方法来执行相应的业务逻辑。...

    Struts2框架及注释和用法

    值栈是Struts2中的一种数据管理机制,它存储Action、结果和其他对象,方便在Action之间共享数据。 **5.拦截器(Interceptors)** 拦截器是Struts2的一大特色,它们在Action执行前后进行额外处理,如日志记录、权限...

    struts2 ognl用法项目

    1. **值栈访问**:Struts2使用值栈存储请求中的所有对象,OGNL可以从值栈顶部找到并访问对象。例如,`#request.user.name`表示从HTTP请求对象中获取`user`属性的`name`。 2. **动态方法调用**:OGNL支持直接调用...

    Struts2--为Action的属性注入值

    在Struts2中,Action类是处理用户请求的核心组件,它封装了业务逻辑。为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便地从请求参数中获取数据并绑定到Action实例上,以便后续的业务处理。 这个特性...

    struts1和struts2的区别

    在视图层,Struts1依赖JSP标准机制绑定对象,而Struts2采用ValueStack技术,允许taglib访问值栈中的值,无需在视图和对象之间建立硬绑定,提高了代码复用性。 类型转换方面,Struts1的ActionForm属性通常是字符串,...

    struts2+JSP

    5. **值栈(Value Stack)**:Struts2使用值栈存储请求中的数据,简化视图层的数据访问。 **JSP技术的基本概念:** 1. **指令元素(Directives)**:如page、include、taglib,它们用于设置全局属性、包含其他页面...

    struts2中的ognl

    在Struts2中,OGNL被广泛用于访问和操作应用程序中的对象属性,包括在请求、参数、session、application上下文中的数据。 1. **访问数据上下文**: - 在Struts2中,使用`#`符号可以访问特定的数据上下文,如`...

    Struts2演示源码

    最后,OGNL(Object-Graph Navigation Language)是Struts2中用于表达式语言的组件,它允许在Action、值栈和视图之间轻松地访问和操作对象属性。例如,我们可以在JSP页面上直接使用OGNL表达式来显示模型数据,或者在...

    Struts2 使用OGNL表达式

    6. **值栈**:Struts2中的值栈是OGNL的主要工作区域,它存储了Action对象和其他相关数据。通过`#root`或`#action`关键字,可以直接访问值栈顶部的对象。 7. **表达式过滤器**:为了安全考虑,Struts2允许配置OGNL...

    struts2数据封装源码

    在Struts2中,数据封装是通过Action类和模型对象(通常称为POJOs,Plain Old Java Objects)来实现的,这使得业务逻辑与视图层和控制层分离,提高了代码的可维护性和灵活性。 1. **Action类**:在Struts2中,Action...

    struts2的核心jar包

    - Struts2中的Action是业务逻辑的载体,它是用户请求处理的主要对象。Action类可以继承自`org.struts2.interceptor.ActionSupport`,并实现相应的业务方法。 - 拦截器是Struts2处理请求的重要机制,它们在Action...

Global site tag (gtag.js) - Google Analytics