struts2用action拦截器做权限判断,继承了com.opensymphony.xwork2.interceptor.MethodFilterInterceptor但方法 protected String doIntercept(ActionInvocation invocation)里只能用一次invocation.invoke(),并且要是写在最上面,下面的return 都会不起作用,我试过在最前面加if(invocation.invoke()==null){return "ajax请求";},可是后面的return就无效了,求各位高手怎么解决?

解决方案 »

  1.   

    没法。如果是你自己写的js,你可以自己在http头或者参数里面加上自己的标记,比如?fromAjax=true
      

  2.   

    1.方法1:ajax请求的时候加一个Flg,在拦截器中取得并判断。2.方法2:利用方法名来区分,正常方法名和ajax方法名加以区分,在拦截器中进行判断。
      

  3.   

    request 对象的头信息中有一个属性叫X-Requested-With按如下方法可以判断,返回true时是ajax请求,返回false时是非ajax请求
    String requestType = req.getHeader("X-Requested-With");
    if (requestType != null && requestType.equals("XMLHttpRequest")) {
    return true;
    } else {
    return false;
    }