Контроллер неоднократно вызывал себя в Spring-MVC - PullRequest
1 голос
/ 19 января 2011

Я пытался просто вывести свой запрос с помощью прямой записи в объект ответа. Это прекрасно работает с сервлетами, но в 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 (), в котором ничего нет. Но в этом случае я ничего не хочу, просто пустая страница. Итак, во-вторых, есть ли способ сделать это?

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Попробуйте вернуть 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() будет.

1 голос
/ 19 января 2011

Возможно, пустое представление viewName класса ModelAndView приведет к тому, что будет использоваться представление из текущего запроса.

Вы можете использовать void или @ResponseBody String в качестве возвращаемого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...