Spring MVC 3 - Почему метод @ResponseBody отображает JSTLView? - PullRequest
4 голосов
/ 08 июня 2010

Я сопоставил один из моих методов в одном контроллере для возврата объекта JSON с помощью @ ResponseBody.

@RequestMapping("/{module}/get/{docId}")
public @ResponseBody Map<String, ? extends Object> get(@PathVariable String module,
        @PathVariable String docId) {
    Criteria criteria = new Criteria("_id", docId);
    return genericDAO.getUniqueEntity(module, true, criteria);
}

Однако вместо этого он перенаправляет меня в JSTLView.Скажем, если {module} это product, а {docId} равен 2, то в консоли я нашел:

DispatcherServlet с именем 'xxx', обрабатывающий POST-запрос для рендеринга [/ xxx / product / get / 2]view [org.springframework.web.servlet.view.JstlView: name 'product / get / 2';URL [/WEB-INF/views/jsp/product/get/2.jsp]] в DispatcherServlet с именем 'xxx'

Как это может произойти?В том же контроллере у меня есть другой метод, похожий на этот, но он работает нормально:

@RequestMapping("/{module}/list")
public @ResponseBody Map<String, ? extends Object> list(@PathVariable String module,
        @RequestParam MultiValueMap<String, String> params,
        @RequestParam(value = "page", required = false) Integer pageNumber,
        @RequestParam(value = "rows", required = false) Integer recordPerPage) {
...

    return genericDAO.list(module, criterias, orders, pageNumber, recordPerPage);
}

Выше do возвращает корректно, предоставляя мне список объектов, которые мне нужны.Кто-нибудь, чтобы помочь мне разгадать тайну?

1 Ответ

5 голосов
/ 09 июня 2010

Если метод контроллера возвращает null, Spring интерпретирует это как высказывание о том, что вы хотите, чтобы каркас отображал «представление по умолчанию».

Было бы лучше, я думаю, что когда метод @RequestBody -аннотирован, эта логика не должна применяться, но, возможно, это сложно реализовать - как бы он обрабатывал нулевой возврат из метода, который обычно возвращает XML, например?

В любом случае, чтобы не допустить этого, вам нужно убедиться, что вы возвращаете что-то , как пустой Map.

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