struts2的EL表达式和Ognl表达式
2017-06-23 15:51
316 查看
由于ValueStack(值栈)是Struts2中Ognl的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接通过下面的EL表达式访问ValueStack(值栈)中对象的属性。
若访问其他Context中的对象,由于他们不是根对象,所以在访问时,需要添加#前缀。
如,session对象,用来访问HttpSession。例如,
或者
,相当于调用
$(foo) //获得值栈中某对象的foo属性
若访问其他Context中的对象,由于他们不是根对象,所以在访问时,需要添加#前缀。
如,session对象,用来访问HttpSession。例如,
#session.userName
或者
#session['userName']
,相当于调用
ServletContext的
getAttribute("userName");
为何EL表达式能够访问valueStack中对象的属性
是因为Struts2对HttpServletRequest作了进一步的封装。public class StrutsRequestWrapper extends HttpServletRequestWrapper{ public StrutsRequestWrapper(HttpServletRequest req){ super(req); } public Object getAttribute(String s){ ...... ActionContext ctx = ActionContext.getContext(); // 先尝试从request范围获取属性值 Object attribute = super.getAttribute(s); if (ctx != null){ if (attribute == null)// 如果从request范围没有找到属性值,则从ValueStack中查找对象的属性值 ....... ValueStack stack = ctx.getValueStack(); attribute = stack.findValue(s); ...... } return attribute; } }
相关文章推荐
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- Struts2标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系与各自使用
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- Struts2---OGNL表达式和EL表达式
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- Struts2中EL表达式的取值顺序及OGNL表达式的取值顺序
- Struts2中的OGNL表达式
- el表达式跟ognl表达式的区别(转)
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- struts2的ognl表达式学习心得
- Struts2深入学习----OGNL表达式原理
- 【转】OGNL表达式struts2标签“%,#,$”
- Struts2学习总结 ---- OGNL 表达式语言
- struts2基础探索之OGNL表达式详解
- Struts2使用OGNL表达式封装输入数据(直接封装Map类型)
- Struts2中Ognl表达式的使用
- struts2与OGNL表达式
- el表达式跟ognl表达式的区别(转)
- Struts2 OGNL表达式的使用