关于Struts2访问web元素,实现requestAware接口

关于Struts2访问web元素的方法有很多种,这里只讲通过实现requestAware,
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从页面取值
这种方法的代码我就不演示了,和平时的取值没有什么区别

猜你喜欢

转载自blog.csdn.net/mrqiang9001/article/details/61619431
今日推荐