二十、ValueStack的常用方法
二十、ValueStack的常用方法
- void set(String key,Object value):先获取根栈栈顶的Map,如果不存在,压入一个新的Map
|
public String execute() throws Exception { ValueStack vs = ActionContext.getContext().getValueStack(); vs.set("p1", "pp1"); vs.set("p2", "pp2"); vs.push(new Date());//把一个对象压入栈顶 vs.set("p3", "pp3"); return } |
- void setValue(String ,Object):String是一个OGNL表达式。如果表达式以#开头,操作contextMap。
如果不是,设置根栈中对象的某个属性,从顶到尾依次搜寻。
|
public String execute() throws Exception { ValueStack vs = ActionContext.getContext().getValueStack(); vs.push(new Date()); // 把一个对象压入栈顶 vs.push(new Date()); // 从栈顶搜索对象的属性,并设置month的值 vs.setValue("[1].month", 10); vs.setValue("#month", 10);
// 从栈顶开始搜索所有对象的shit属性:setShit,都没有报错 vs.setValue("shit", "hehe");
return } |
- Object findValue(String expr):参数是一个OGNL表达式。如果以#开头,
从contextMap中找key值所对应的对象。如果不是以#开头,搜索根栈中对象的属性(getter方法)
特别注意:如果编写的表达式不是以#开头,先搜索根栈对象的所有属性,
如果没有找到,会把它当做key值到contextMap中找。
|
public String execute() throws Exception { ValueStack vs = ActionContext.getContext().getValueStack(); vs.push(new Date()); // 把一个对象压入栈顶 vs.push(new Date()); // 从栈顶搜索对象的属性,并设置month的值 vs.setValue("[1].month", 10); vs.setValue("#month", 10);
// 从栈顶开始搜索所有对象的shit属性:setShit,都没有报错 //vs.setValue("shit", "hehe");
return } |
Jsp页面代码:
|
<% ValueStack vs = ActionContext.getContext().getValueStack(); Object obj1 = vs.findValue("month"); System.out.println(obj1); //打印第二个对象的month属性 obj1 = vs.findValue("[1].month"); System.out.println(obj1); obj1 = vs.findValue("request");//不建议 System.out.println(obj1); obj1 = vs.findValue("#request"); System.out.println(obj1); %> |
- String findString(String expr):把OGNL表达式获取的对象转换成String
|
public String execute() throws Exception { ValueStack vs = ActionContext.getContext().getValueStack(); vs.setValue("#now", new Date()); String s1 = vs.findString("#now");// 有没有错 // 没有错的,显示的时候,Struts2框架还有个类型转换器的存在。已经把Date类型转换成了String System.out.println(s1);
vs.setValue("#p1", "new Person()"); //此版本会自动调用toString方法 String s2 = vs.findString("#p1"); System.out.println(s2);
return } |
二十、ValueStack的常用方法的更多相关文章
- JAVA基础知识总结:一到二十二全部总结
>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—TcpTrace工具(二十六)
止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...
- WCF学习之旅—实现支持REST客户端应用(二十四)
WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...
- geotrellis使用(二十五)将Geotrellis移植到spark2.0
目录 前言 升级spark到2.0 将geotrellis最新版部署到spark2.0(CDH) 总结 一.前言 事情总是变化这么快,前面刚写了一篇博客介绍如何将geotrellis移植 ...
- geotrellis使用(二十二)实时获取点状目标对应的栅格数据值
目录 前言 实现方法 总结 一.前言 其实这个功能之前已经实现,今天将其采用1.0版的方式进行了重构与完善,现将该内容进行总结. 其实这个功能很常见,比如google地球上 ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 二十五、JDK1.5新特性---枚举
与上篇文章介绍的相同,本文也是介绍jdk 1.5出现的新特性,本文将介绍枚举的相关用法. 在jdk 1.5 之前.Java可以有两种方式定义新类型:类和接口.对于大部分面向对象来说.这两种方法看起来似 ...
- [分享] IT天空的二十二条军规
Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...
随机推荐
- C Primer Plus(第五版)10
第 10 章 数组和指针 在本章中你将学习下列内容: · 关键字: static (静态) · 运算符: & * (一元) · 创建与初始化数组的方法. · 指针(基于已学的基础知识)及指针和 ...
- CodeForces 604D 【离散数学 置换群】
题意: 给你一个方程,方程太变态不打,给你一个p一个k,p保证是大于等于3的质数,k保证在0~p-1之间的整数.要求对应函数的定义域在0~p-1值域为0~p-1的子集,求这样的函数有多少个... 分析 ...
- (转)将access数据库迁移到SQLserver的两种方法
在实际项目使用中遇到的问题,将原文整理后以备后用. 原文地址(具体链接几次未知):http://www.jb51.net/article/41956.htm 方法1 使用ACCESS2007自带的数据 ...
- jdk1.6官方下载地址
jdk1.6: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javas ...
- PHP过滤HTML标签的三种方法
在做项目的过程中,我们经常需要用到过滤一些html标签来实现提高数据的安全性,其实就是删除那些对应用程序有潜在危害的数据.它用于去除标签以及删除或编码不需要的字符.首先分享一些比较常见的 $str=p ...
- IOS键盘的相关设置(UITextfield)
一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 UIKeyboa ...
- windows Android开发环境快速搭建和部署
windows安装Android的开发环境相对来说比较简单,本文写给第一次想在自己Windows上建立Android开发环境的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对初级 ...
- 多线程(二)NSThread
一.NSThread优缺点 优点:NSThread是最轻量级的 缺点:需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销 二.NSThread的使用 ...
- 默菲定律 [Murphy's Law]
一.关于默菲定律(Murphy's Law) “墨菲定律”.“帕金森定律”和“彼德原理”并称为二十世纪西方文化三大发现. “墨菲定律”的原话是这样说的:If there are two or mo ...
- childNodes在IE与Firefox中的区别
嗯,这是前几天写一个遍历双层List集合,动态输出对应的表格并且控制固定表头的效果时发现的一个知识点,程序编好后在IE8浏览器下测试没问题,在Firefox35.0.1总是报错,后来发现是IE与FF对 ...