为何使用EL了表达式能够访问valueStack中对象的属性-源码分析

来源:互联网 发布:arm linux gcc4.3下载 编辑:程序博客网 时间:2024/06/06 19:08

我们在学习web基础的时候,我们知道使用那个EL表达式能够访问application、request、session等域里面的属性值,但是在struts2中,El表达式为何能够访问valueStack中对象的属性呢?

其实很简单,原因是Struts2中对HttpServletRequest作了进一步的封装,其源代码如下:


//首先先继承request实现类,(wrapper:封装)public class StrutsRequestWrapper extends HttpServletRequstWrapper(){       //继承父类方法        public StrutsRequestWrapper (HttpServletRequest req){               super(req);         }       public Object getAttribute(String s){       .................        }    //先得到ActionContext对象    ActionContext ctx=ActionContext.getContent();   //直接先从request域中获取s属性的值,    Object attribute=super.getAttribute(s);    if(ctx!=null){          //如果从request中没能获取到s的属性值,那么就从ValueStack中获取          if(attribute==null){                 //.........................                 ValueStack stack=ctx.getValueStack();                 aattribute=stack.findValue();                //...........................          }        }}

搞定!

------------------------------------------------------------------------------------------------苦难不是博得同情的资本,唯有不断奋斗才能改变命运!

0 0
原创粉丝点击