解决ExtJs中ajax重定向的问题
首先我们项目采用的是extJs做UI框架,后台是SSM。现在项目要加入简单数据权限过滤的功能,于是我使用过滤器,获取用户访问的接口地址,判断只要与session中的可以访问的数据接口权限不匹配,那么就跳转到无权限的错误页面。
问题来了,ExtJs都是采用ajax向后台发送请求,这时候如果重定向到无权限的错误页面就会产生问题。最直接的解决方案就是,每一个向后台发送的ajax请求,后台都会返回
新建一个js文件,添加如下代码: //为Ext的ajax添加监听 //requestcomplete:请求完成 Ext.Ajax.addListener("requestcomplete",function(conn,response,options,eOpts){ //后台也可以放入请求头还获取错误信息,前台通过`response.getAllResponseHeaders()`来获取 //var msg = response.getAllResponseHeaders(); if(response.responseText.indexOf('error') != -1){ window.location.href='http://xxx/error.html'; } },this); 一般我们的项目都是一个主的
方法2比较通用也比较简单,直接在filter中使用out.print输出一段js进行跳转。 UserVo u = (UserVo) session.getAttribute("user"); if (u == null) { PrintWriter out = res.getWriter(); if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equals("XMLHttpRequest")) { String message = path + "/user/loginHome"; out.print(message); return; }else { out.println("<html>"); out.println("<script>"); out.println("alert('登录超时!请重新登录')"); out.println("window.open ('" + path + "/user/loginHome','_top')"); out.println("</script>"); out.println("</html>"); return; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |