spring HandlerInterceptorAdapter攔截ajax異步請求,報錯ERR_INCOMPLETE_CHUNKED_ENCODING

話很少說,直接上正文。ajax

異常信息:

  Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING

問題描述:

  該異常是在頁面發送ajax請求到服務器,中間使用了HandlerInterceptorAdapter對請求作了處理。ajax返回json格式的數據時發生的錯誤信息。
網絡上搜索出的問題大可能是頁面、權限、或者其餘不相關的問題致使的。浪費了不少時間、精力以後,發現本身找錯了方向。

解決思路:

step1.
  英文翻譯:網絡錯誤:不完整的分塊編碼。
  技術翻譯:網絡傳輸錯誤,不完整的報文結構
step2.
  單步調試:在HandlerInterceptorAdapter中的postHandle()方法中,有對modelAndView添加的model進行處理,此時的modelAndView爲null!--bingo!
  源代碼:
    
    @Override
    public void postHandle(HttpServletRequest httpServletRequest,
                           HttpServletResponse httpServletResponse, Object o,
                           ModelAndView modelAndView) throws Exception {
        HttpSession session = httpServletRequest.getSession();
        String userName = session.getAttribute(Constants.SESSION_USER_NAME).toString();
        modelAndView.addObject("username", userName);
        super.postHandle(httpServletRequest, httpServletResponse, o, modelAndView);
  }

 

   簡單的說,就是發送的是ajax異步請求,只是想獲取一個json封裝的數據,而在攔截器中卻硬生生的加了個modelAndView,並且controller層返回的數據中也並無實例modelAndView。這個modelAndView也不是ajax請求想要的返回數據。
 

解決方案:

  對modelAndView爲null作個判斷:
  
  if (!modelAndView.isEmpty()) {
            modelAndView.addObject("username", userName);
       }

感想:

  遇到比較難的問題,仍是仔細閱讀錯誤信息以及單步調試吧
相關文章
相關標籤/搜索