关于Struts2访问web元素,实现requestAware接口
2017-03-12 16:08
357 查看
关于Struts2访问web元素的方法有很多种,这里只讲通过实现requestAware,
sessionAware接口来进行web元素访问时需要注意的一些事情
实现了requestAware和sessionAware接口,其Map集合中包含的信息
控制台打印的结果:
源码:
从这个结果可以看出实现了requestAware接口,其Map集合中包含了一系列的和本次请求有关的信息,而实现了sessionAware接口,其Map集合中只会包含你所设定的值,那么这个信息有什么用呢?比如你在后台想通过Map设定好一个值,然后到前台使用js去取,那么你就需要将其转换问json格式,然后解析这个json对象,从中取出你需要的值,这时,你会发现在实现了requestAware接口的Map转json对象是转不了的,后台程序走到这里直接静悄悄地死掉了(因为不会报错),所以也就前台也就无法从json对象中获取到数据,但是,可以通过EL表达式或者Struts2的UI标签获取到Map中设定的值,只是不能通过js获取
解决办法
1.在给Map设定值时,先将其清空,然后再放值
2.将值保存在页面中,然后js从页面取值
这种方法的代码我就不演示了,和平时的取值没有什么区别
sessionAware接口来进行web元素访问时需要注意的一些事情
实现了requestAware和sessionAware接口,其Map集合中包含的信息
控制台打印的结果:
request:{struts.actionMapping=ActionMapping{name='login2', namespace='/access', method='null', extension='null', params=null, result=null}, r1=r1, struts.valueStack=com.opensymphony.xwork2.ognl.OgnlValueStack@7ec7ea1d, __cleanup_recursion_counter=1} session:{s1=s1}
源码:
package com.strutsdemo.action; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class AccessAction2 extends ActionSupport implements RequestAware , SessionAware,ApplicationAware { private Map<String,Object> request; private Map<String,Object> session; private Map<String,Object> application; @Override public String execute() throws Exception { request.put("r1", "r1"); session.put("s1", "s1"); application.put("a1", "a1"); System.out.println("request:" + request); System.out.println("session:" + session); return SUCCESS; } @Override public void setApplication(Map<String, Object> arg0) { application = arg0; } @Override public void setSession(Map<String, Object> arg0) { session = arg0; } @Override public void setRequest(Map<String, Object> arg0) { request = arg0; } }
从这个结果可以看出实现了requestAware接口,其Map集合中包含了一系列的和本次请求有关的信息,而实现了sessionAware接口,其Map集合中只会包含你所设定的值,那么这个信息有什么用呢?比如你在后台想通过Map设定好一个值,然后到前台使用js去取,那么你就需要将其转换问json格式,然后解析这个json对象,从中取出你需要的值,这时,你会发现在实现了requestAware接口的Map转json对象是转不了的,后台程序走到这里直接静悄悄地死掉了(因为不会报错),所以也就前台也就无法从json对象中获取到数据,但是,可以通过EL表达式或者Struts2的UI标签获取到Map中设定的值,只是不能通过js获取
解决办法
1.在给Map设定值时,先将其清空,然后再放值
request.clear(); request.put("r1", "r1");
2.将值保存在页面中,然后js从页面取值
这种方法的代码我就不演示了,和平时的取值没有什么区别
相关文章推荐
- struts2访问web元素
- STRUTS2 ACTION 访问WEB元素的四种方式
- struts2访问web元素
- Struts2_12_访问WEB元素_1
- Struts2----访问Web元素
- 教学笔记-Struts2中访问web元素
- Struts2 Action访问web元素的四种方式
- Struts2中访问Web元素的3中方法
- Struts2访问web元素
- Struts2访问Web元素
- Struts2——访问web元素!!!
- Struts2_访问Web元素
- Struts2访问 web 元素
- 关于Struts2中Action从表单取值并且存到Web元素中(session)
- struts2访问网页元素,Ioc(DI)思想与实现很重要!
- Struts2中访问Web元素的3中方法
- Struts2访问Web元素
- 关于判断web是手机端还是电脑端访问以及复制删除按钮的实现
- struts2_大纲02_访问Web页面元素
- 四种struts2访问web元素的方式