码迷,mamicode.com
首页 > 移动开发 > 详细

Struts2源码分析(一) 一一一 StrutsRequestWrapper

时间:2015-05-03 19:02:54      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:strutsrequestwrapper   struts2   

			StrutsRequestWrapper的源码

// 核心代码:
public class StrutsRequestWrapper extends HttpServletRequestWrapper {

    /**
     * 注意下面这句注释:获取object,如果没找到就去ValueStack里面找
     * Gets the object, looking in the value stack if not found
     *
     * @param s The attribute key
     */
    public Object getAttribute(String s) {
        if (s != null && s.startsWith("javax.servlet")) {
            return super.getAttribute(s);
        }

        ActionContext ctx = ActionContext.getContext();

	// ***** 调用父类的getAttribute()方法,获取request作用域中的属性 ***** 
        Object attribute = super.getAttribute(s);

        if (ctx != null) {
            if (attribute == null) {
                boolean alreadyIn = false;
                Boolean b = (Boolean) ctx.get("__requestWrapper.getAttribute");
                if (b != null) {
                    alreadyIn = b.booleanValue();
                }

                if (!alreadyIn && s.indexOf("#") == -1) {
                    try {
						// ***** 如果在request中没找到,那就去ValueStack中找 ***** 
                        // If not found, then try the ValueStack
                        ctx.put("__requestWrapper.getAttribute", Boolean.TRUE);
                        ValueStack stack = ctx.getValueStack();
                        if (stack != null) {
			// ***** 调用findValue()方法,在ValueStack中找[先从对象栈(Value Stack Contents)中找,若没找到,就去map栈(Stack Context)中找]
                            attribute = stack.findValue(s);
                        }
                    } finally {
                        ctx.put("__requestWrapper.getAttribute", Boolean.FALSE);
                    }
                }
            }
        }
        return attribute;
    }
}


所以:在jsp页面中使用EL表达式也可以访问到struts2中ValueStack里面的内容
EL表达式的查找顺序:
page --> request --> valueStack.findValue() --> session --> application


Struts2源码分析(一) 一一一 StrutsRequestWrapper

标签:strutsrequestwrapper   struts2   

原文地址:http://blog.csdn.net/wodewutai17quiet/article/details/45460551

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!