Struts2值栈和ognl表达式
2015-12-21 16:39
567 查看
一、struts2值栈:
包含两部分:对象栈和map栈
对象栈中存放的是相关的对象,在Action类中可以通过ActionContext.getContext.getValueStack().push(Object)方法将相关的对象放在值栈栈顶,在jsp页面通过ognl表达式或EL表达式将值栈中的数据取出。
map栈中存放的是application.session.request.attr.parameters对象,在Action类中可以通过ActionContext.getContext().put(key,value)将对象存放在request域对象中,通过ActionContext.getContext().getSession().put(k,v)将对象存放在Session域中,以实现与ServletAPI的解耦。
二、Ognl表达式:
在jsp页面中使用ognl表达式获取数据时,底层实际上调用的是ValueStack的findValue(string expr)方法
findValue(String expr)查找的顺序:
1 首先在对象栈中查找指定属性,从栈顶到栈底依次查找,找到后就返回。
2.若对象栈中没有属性,则从map栈中查找对应的key值,找到就返回。
格式:
1.在jsp页面中的格式:%{ognl},只能写在struts2的自定义标签中
2.在struts2配置文件中的格式:${ognl}
语法:
user 相当于 findValue("user") 先在对象栈中查找,找不到则在map栈中查找
#user 相当于 map.get("user");
在map栈中查找
#user.name 相当于 map.get("user").getName();
表单回显:
1.对象栈栈顶对象的数据会自动回显在Struts2自定义标签中与栈顶对象相关属性相同的标签中
2.EL表达式回显:会自动在page request ValueStack.findValue(String expr) session application域中查找相关对象。
注意:在Struts2的trutsRequestWrapper类中,重写了HttpServletRequestWapper的getAttribute(String key)方法,使得当在request域中找不到对象时,调用findValue(string)方法在值栈中查找。
包含两部分:对象栈和map栈
对象栈中存放的是相关的对象,在Action类中可以通过ActionContext.getContext.getValueStack().push(Object)方法将相关的对象放在值栈栈顶,在jsp页面通过ognl表达式或EL表达式将值栈中的数据取出。
map栈中存放的是application.session.request.attr.parameters对象,在Action类中可以通过ActionContext.getContext().put(key,value)将对象存放在request域对象中,通过ActionContext.getContext().getSession().put(k,v)将对象存放在Session域中,以实现与ServletAPI的解耦。
二、Ognl表达式:
在jsp页面中使用ognl表达式获取数据时,底层实际上调用的是ValueStack的findValue(string expr)方法
findValue(String expr)查找的顺序:
1 首先在对象栈中查找指定属性,从栈顶到栈底依次查找,找到后就返回。
2.若对象栈中没有属性,则从map栈中查找对应的key值,找到就返回。
格式:
1.在jsp页面中的格式:%{ognl},只能写在struts2的自定义标签中
2.在struts2配置文件中的格式:${ognl}
语法:
user 相当于 findValue("user") 先在对象栈中查找,找不到则在map栈中查找
#user 相当于 map.get("user");
在map栈中查找
#user.name 相当于 map.get("user").getName();
表单回显:
1.对象栈栈顶对象的数据会自动回显在Struts2自定义标签中与栈顶对象相关属性相同的标签中
2.EL表达式回显:会自动在page request ValueStack.findValue(String expr) session application域中查找相关对象。
注意:在Struts2的trutsRequestWrapper类中,重写了HttpServletRequestWapper的getAttribute(String key)方法,使得当在request域中找不到对象时,调用findValue(string)方法在值栈中查找。
相关文章推荐
- Struts - 标签库
- struts1.0于struts2.0的比较
- Struts2中关于namespace的学习心得
- Struts2----自定义action的学习心得
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- struts2
- struts 学习笔记
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- Struts2+jQuery+JSON实现异步交互
- 软件开发疑惑解答
- ajax ssh 整合
- struts2登陆拦截器
- struts2框架原理
- web.xml
- web.xml
- struts2框架原理
- struts2登陆拦截器
- liferay中配置Struts2
- strust2--异常
- Struts2部署后抛出404 Tomcat work目录下均为空目录