2011-01-19 56 views
1

我只是試圖直接寫入響應對象來輸出我的請求。這對於s​​ervlet非常有用,但是對於Spring-MVC,我最終創建了一個無限循環,出於某種原因,我不明白。基本上控制器只是被重複調用。我甚至不知道這是可能的。控制器在Spring-MVC中反覆調用自己

public ModelAndView handleRequest(
     HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
{ 
    System.out.println("I will get called infinitely"); 
    response.getWriter().print("Hello World!"); 
    response.getWriter().close(); 
    return new ModelAndView(); 

} 

所以問題是,有誰知道爲什麼它會導致無限次的重新請求到這個頁面?這似乎只發生在我創建一個沒有任何內容的ModelAndView()時。但在這種情況下,我不想要任何東西,只是一個空白頁面。那麼其次有沒有辦法做到這一點?

+0

這取決於您的視圖技術是什麼以及您的視圖解析器是如何設置的。它是JSP嗎?你是否在調度器servlet中手動配置了任何視圖解析器? – Affe 2011-01-19 06:31:25

回答

4

嘗試返回null而不是ModelAndView,並致電flush()而不是close()。與此類似,

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    System.out.println("I will get called infinitely"); 
    response.getWriter().print("Hello World!"); 
    response.getWriter().flush(); 
    return null;  
} 

注:我不知道,close()是否會提交response與否,而是flush()意志。

+0

完美的作品!謝謝! – 2011-01-22 21:22:30

1

可能是ModelAndView類的空viewName會導致使用當前請求的視圖。

您可以使用void@ResponseBody String作爲返回類型。

相關問題