在普通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;
}