2011-01-19 14 views
1

私は応答オブジェクトに直接書き込むだけでリクエストを出力しようとしていました。これはサーブレットではうまくいきますが、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ですか?ディスパッチャサーブレットのビューリゾルバを手動で設定しましたか? – Affe

答えて

4

ModelAndViewの代わりにnullを返し、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

それは完璧に動作します!ありがとう! –

1

おそらくModelAndViewクラスの空のviewNameは、現在のリクエストからのビューが使用される原因になります。

返品の種類としてvoidまたは@ResponseBody Stringを使用できます。

関連する問題