2011-01-19 58 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作为返回类型。

相关问题