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. IMDB-WIKI - 具有年龄和性别标签的500k +脸部图像

    Rasmus Rothe, Radu Timofte, Luc Van Gool DEX:从单一形象深刻地看待年龄 观看 人物研讨会国际计算机视觉大会(ICCV),2015*获胜LAP面对年龄估计的挑 ...

  2. 热烈庆祝UE4完全免费Free---GitHub的关联方式

    热烈庆祝UE4完全免费Free---GitHub的关联方式 时间:2015-03-03 18:38:52      阅读:3007      评论:0      收藏:0      [点我收藏+] 标 ...

  3. 深度解析开发项目之 01 - SVProgressHUD用法

    深度解析开发项目之 01 - SVProgressHUD用法 首先来到工程的pch文件中 01 - 导入头文件 02 - 定义宏 03 - 项目中的使用 3.1 - SVHUD_Normal:  3. ...

  4. javascript点滴积累

    1. javascript中的array, set, map 均为数据容器,使用iterable内置的forEach方法 var a = ['A', 'B', 'C'];a.forEach(funct ...

  5. svn服务器迁移(windows下)

    废话不多说,直接上步骤: 服务端: 1.创建一个备份文件夹 如:D:\svn_bak 2.进入cmd,cd命令到你的svn服务器安装目录的bin文件下,本人的安装目录在 D:\Program File ...

  6. windows常用快捷键(转载)

    f1 显示当前程序或者windows的帮助内容. f2 当你选中一个文件的话,这意味着“重命名” f3 当你在桌面上的时候是打开“查找:所有文件” 对话框 f10或alt 激活当前程序的菜单栏 win ...

  7. sql无限级树型查询

    表结构如下: 表数据如下: 一提到无限级,很容易想到递归,使用sql 的CET语法如下 with menu(Id,Name,ParentId,Level) as ( select Id,Name,Pa ...

  8. 【BZOJ1483】[HNOI2009]梦幻布丁 链表+启发式合并

    [BZOJ1483][HNOI2009]梦幻布丁 Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2 ...

  9. 在Eclipse中建立Maven Web项目

    一.软件版本 Eclipse Java EE IDE for Web Developers. Version: Neon Release (4.6.0) Maven 3.3.9 Servlet 2.5 ...

  10. Eclipse内存错误java heap space

    Eclipse安装路径下的内存配置文件:eclipse.ini 文件末尾: -XX:MaxPermSize=256m-Xms40m-Xmx512m 其中 -Xmx512m表示最大内存,改为768或10 ...