在普通filter中,如果token超时后,直接重定向到登录页面即可;
但是,在nutz中,如果实现ActionFilter时,返回值为null表示继续执行,为view的时候表示中断;
所以,在nutz中判断是ajax请求后,应该返回它所对应的view对象(UTF8JsonView):
if(checkIsAjax(request)){
//如果是ajax,则设置session超时;
System.out.println("ajax request");
response.setHeader("sessionstatus","timeout");
ajaxMap.put("sessionstatus","timeout");
//此处注意,设置数据时要用nutz自己的json对象转换
return new UTF8JsonView(JsonFormat.full()).setData(Json.toJson(ajaxMap));
}
private boolean checkIsAjax(HttpServletRequest request){
if (request.getHeader("x-requested-with") != null
&& "XMLHttpRequest".equalsIgnoreCase(request.getHeader("x-requested-with"))) {
return true;
}
return false;
}