struts2中 ValueStack的set方法与setValue方法的区别呢?

示例代码:

  1. ActionContext.getContext().getValueStack().setValue("myname22", "ttt");
  2. 区别:

    (1)setValue 方法必须要求有该属性的setter方法,否则会报错:

    Error setting expression'myname22' with value 'ttt' - [unknown location]

    set方法设置的属性与该action没有任何关系,所以就算action中没有该属性的setter方法,调用

    1. ActionContext.getContext().getValueStack().set("myname22", "ttt");
  3. (2)setValue方法设置的是action的属性(action中有属性myname22),在value stack 中对应的是action的属性;

    而set方法设置的属性会放在一个hashmap中,与当前的action没有任何瓜葛,但是两者都在value stack中,set方法设置的属性可以通过 <s:property value="myname22"  />来取值。

    共同点:

    (1)setValue和set方法设置的属性可以通过

    1. String myname2=(String)ServletActionContext.getContext().getValueStack().findValue("myname22");

    来取值;

    (2)在result指向的JSP页面中都可以通过 <s:property value="myname22"  />来取值(setValue方法设置的属性必须要有对应的getter方法)。

    action代码:

    1. package example;
    2. import org.apache.struts2.ServletActionContext;
    3. import com.opensymphony.xwork2.ActionContext;
    4. import com.opensymphony.xwork2.ActionSupport;
    5. public class GetValueAction extends ActionSupport {
    6. private static final long serialVersionUID = 4865100826143278474L;
    7. private String myname=null;
    8. //  private String myname22;
    9. @Override
    10. public String execute() throws Exception {
    11. ActionContext.getContext().getValueStack().set("myname22", "ttt");
    12. String myname2=(String)ServletActionContext.getContext().getValueStack().findValue("myname22");
    13. //      System.out.println("myname2: "+this.myname);
    14. return super.execute();
    15. }
    16. public String getMyname() {
    17. return myname;
    18. }
    19. public void setMyname(String myname) {
    20. this.myname = myname;
    21. }
    22. //  public String getMyname22() {
    23. //      return myname22;
    24. //  }
    25. //
    26. //  public void setMyname22(String myname22) {
    27. //      System.out.println("abc:"+myname22);
    28. //      this.myname22 = myname22;
    29. //  }
    30. //  public String getMyname22() {
    31. //      return myname22;
    32. //  }
    33. }

    总结:set方法和setValue方法设置的属性都可以通过<s:property value="myname22"  />取值。

struts2 ValueStack的set方法与setValue方法的区别的更多相关文章

  1. struts2视频学习笔记 11-12(动态方法调用,接收请求参数)

    课时11 动态方法调用 如果Action中存在多个方法时,可以使用!+方法名调用指定方法.(不推荐使用) public String execute(){ setMsg("execute&q ...

  2. struts2 type="redirectAction"重定向 与动态调用方法

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...

  3. Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法

    Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 在使用struts2的项目中上传文件的时候出现了一个这样的错误: 2011-7 ...

  4. easyui combobox setValue方法不能触发onSelect事件

    //setValue方法不能触发onSelect事件 //$("#FundingSource").combobox("setValue", data.Fundi ...

  5. Struts2 后台获取路径的几种方法

    Struts2 后台获取路径的几种方法 package actions.app; import java.io.File; import org.apache.struts2.ServletActio ...

  6. struts2.5+框架使用通配符与动态方法

    概述:struts2.5以后加强了安全性,下面就是安全配置引发的问题 通配符: 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="usercru ...

  7. Struts2动态调用DMI及错误解决方法

    在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多 ...

  8. struts2 ValueStack的作用

    Value Stack的作用: 1.       可以作为一个数据中转站 2.       用于在前台-后台之间传递数据,最典型的做法就是struts2标签也ognl表达式的结合.我用得最多的就是数据 ...

  9. C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法

    在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异.比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口 ...

随机推荐

  1. What is love ? and how to do?

    1.匹配度(matched-degree): 灵性 文化(东西方.南北方) 智力 审美 性 2.对待差异的原则(The principle of difference): 抓大放小 求同存异 心脑并用 ...

  2. MIDI制作的相关软件

    Native Instruments Kontakt(音乐采样器) fl studio 12 v12.5.0.59 汉化版水果   http://xiazai.flstudiochina.com/wm ...

  3. 简化动态MERGE的SQL计算

    MSSQL.ORACLE等数据库支持MERGE语句更新表.但表结构未知时,因为缺乏集合类数据.用存储过程获得表结构再动态拼出SQL很麻烦,代码会有几十行之多:相同原因,用Java等高级语言实现也不简单 ...

  4. 宜信开源微服务任务调度平台(SIA-TASK)

    背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任 ...

  5. 无线(仅WIFI)攻击思路总结

    从事信息安全相关工作5年了,虽然主要工作是安全产品售前.安全服务等方向,但既然选择了安全,想必都是有点黑客情节的,因此也前前后后杂七杂八的学了点东西.最近在研究无线(主要是WIFI)安全,相关书籍看了 ...

  6. 面向对象基础——String类

    String类的两种实例化方法  A:直接赋值 public class StringDemo01{ public static void main(String args[]){ String na ...

  7. 2016/07/07 PHP的线程安全与非线程安全版本的区别

    Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...

  8. Hibernate表关系映射之一对多映射

    一.基本概述 在表中的一对多,是使用外键关联,通过一张表的一个键另一个表的外键来建立一多关系;而在类中表示为一个类中有一个集合属性包含对方类的很多对象,而在另一个类中,只包含前述类的一个对象,从而实现 ...

  9. scrollify 全屏滚动插件

    使用 1.引入文件 <script src="js/jquery.min.js"> </script> <script src="js/jq ...

  10. if UDP is permitted

    Networking Basics (The Java™ Tutorials > Custom Networking > Overview of Networking) https://d ...