Struts源码之ValueStack
/** * ValueStack allows multiple beans to be pushed in and dynamic EL expressions to be evaluated against it. When * evaluating an expression, the stack will be searched down the stack, from the latest objects pushed in to the * earliest, looking for a bean with a getter or setter for the given property or a method of the given name (depending * on the expression being evaluated). */ public interface ValueStack { public static final String VALUE_STACK = "com.opensymphony.xwork2.util.ValueStack.ValueStack"; public static final String REPORT_ERRORS_ON_NO_PROP = "com.opensymphony.xwork2.util.ValueStack.ReportErrorsOnNoProp"; /** * Gets the context for this value stack. The context holds all the information in the value stack and it's surroundings. * * @return the context. */ public abstract Map<String, Object> getContext(); /** * Sets the default type to convert to if no type is provided when getting a value. * * @param defaultType the new default type */ public abstract void setDefaultType(Class defaultType); /** * Set a override map containing <code>key -> values</code> that takes precedent when doing find operations on the ValueStack. * <p/> * See the unit test for ValueStackTest for examples. * * @param overrides overrides map. */ public abstract void setExprOverrides(Map<Object, Object> overrides); /** * Gets the override map if anyone exists. * * @return the override map, <tt>null</tt> if not set. */ public abstract Map<Object, Object> getExprOverrides(); /** * Get the CompoundRoot which holds the objects pushed onto the stack * * @return the root */ public abstract CompoundRoot getRoot(); /** * Attempts to set a property on a bean in the stack with the given expression using the default search order. * * @param expr the expression defining the path to the property to be set. * @param value the value to be set into the named property */ public abstract void setValue(String expr, Object value); /** * Attempts to set a property on a bean in the stack with the given expression using the default search order. * N.B.: unlike #setValue(String,Object) it doesn't allow eval expression. * @param expr the expression defining the path to the property to be set. * @param value the value to be set into the named property */ void setParameter(String expr, Object value); /** * Attempts to set a property on a bean in the stack with the given expression using the default search order. * * @param expr the expression defining the path to the property to be set. * @param value the value to be set into the named property * @param throwExceptionOnFailure a flag to tell whether an exception should be thrown if there is no property with * the given name. */ public abstract void setValue(String expr, Object value, boolean throwExceptionOnFailure); public abstract String findString(String expr); public abstract String findString(String expr, boolean throwExceptionOnFailure); /** * Find a value by evaluating the given expression against the stack in the default search order. * * @param expr the expression giving the path of properties to navigate to find the property value to return * @return the result of evaluating the expression */ public abstract Object findValue(String expr); public abstract Object findValue(String expr, boolean throwExceptionOnFailure); /** * Find a value by evaluating the given expression against the stack in the default search order. * * @param expr the expression giving the path of properties to navigate to find the property value to return * @param asType the type to convert the return value to * @return the result of evaluating the expression */ public abstract Object findValue(String expr, Class asType); public abstract Object findValue(String expr, Class asType, boolean throwExceptionOnFailure); /** * Get the object on the top of the stack <b>without</b> changing the stack. * * @return the object on the top. * @see CompoundRoot#peek() */ public abstract Object peek(); /** * Get the object on the top of the stack and <b>remove</b> it from the stack. * * @return the object on the top of the stack * @see CompoundRoot#pop() */ public abstract Object pop(); /** * Put this object onto the top of the stack * * @param o the object to be pushed onto the stack * @see CompoundRoot#push(Object) */ public abstract void push(Object o); /** * Sets an object on the stack with the given key * so it is retrievable by {@link #findValue(String)}, {@link #findValue(String, Class)} * * @param key the key * @param o the object */ public abstract void set(String key, Object o); /** * Get the number of objects in the stack * * @return the number of objects in the stack */ public abstract int size(); }
Struts源码之ValueStack的更多相关文章
- 将struts源码导入eclipse
预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤. 步骤: 1. 下载struts相应版本的源码 http://struts.apache.org/downlo ...
- myeclipse 跟踪struts 源码失败
解决办法: 找到工程jar包所在的位置,点击右键:properties 点击external folder 找到 这个包下的src文件夹 导入之后, 源码会变色
- Struts源码之OgnlValueStack
public class OgnlValueStack implements Serializable, ValueStack, ClearableValueStack, MemberAccessVa ...
- 如何阅读Java源码 阅读java的真实体会
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比 ...
- 如何阅读Java源码
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...
- Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...
- [收藏] Java源码阅读的真实体会
收藏自http://www.iteye.com/topic/1113732 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我 ...
- Java源码阅读的真实体会(一种学习思路)
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...
- Java源码阅读的真实体会(一种学习思路)【转】
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...
随机推荐
- JAVA面向对象-----匿名内部类
匿名内部类 匿名内部类:就是没有类名字的内部类. 匿名内部类作用:简化内部类书写. 匿名内部类的前提:必须继承一个父类或者是实现一个接口. 匿名内部类的格式: new 父类或者接口(){ 执行代码-. ...
- static 变量(静态变量)
在C++的面向对象编程中,static还可以加在类的数据成员或成员函数之前.这样定义的数据成员或成员函数就被类所拥有,而不再属于类的对象. #include <iostream> usin ...
- For oracle databases, if the top showing the oracle database, then oracle process is using the top c
Note 805586.1 Troubleshooting Session Administration (Doc ID 805586.1)Note 822527.1 How To Find ...
- java.util.Arrays类详解(源码总结)
概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...
- SSH框架实现仿淘宝购物demo
还记得六月份实习的时候,曾经做过一个电商的项目,项目里面需要实现类似淘宝购物车的移动端的demo,随着项目的进行,再一次跟购物车碰面,但是今天呢,不是移动端的需求,如何使用SSH框架实现类似淘宝的购物 ...
- 详解EBS接口开发之采购接收&退货处理之关键API--(补充)
PROCEDURE process_rcv_online(p_api_version IN NUMBER, p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_ ...
- 剑指Offer——算法复杂度中的O(logN)底数是多少
剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多 ...
- 深入理解MyBatis框架的的配置信息
面对一个框架,最重要的不是说回用其代码就可以了,我们需要了解其思想,这样才能更快更好的掌握这个框架.而对于一个框架,最重要的就是其配置文件的作用及功能了.下面,我就来谈一谈我今天遇到的这个MyBati ...
- const引用
在C++中可以声明const引用 const Type& name = var: const引用让变量拥有只读属性 const int &a = b const int &a ...
- 摆脱命令行,Ubuntu下配置Android开发环境
作者:宋志辉 微博:weibo.com/askzhihui/ 安装所需工具 一.新立得 新立得(Synaptic)是Debian和Ubuntu Linux操作系统的包管理工具apt的图形化前端. 它结 ...