Я пытаюсь использовать MappingJacksonJsonView
с Spring 3.0, но безуспешно.Я не знаю, что я делаю неправильно, я думаю, проблема в том, что я не знаю, как сказать, чтобы использовать MappingJacksonJsonView
для отправки запроса.Я пытался использовать одно и то же имя для имени представления и имени компонента MappingJacksonView
, но не сработало.Я создал пример тестового приложения здесь: https://github.com/stivlo/restjson
In web.xml Я определил ContextLoaderListener
и отображение для dispatcherServlet
.
In servlet-context.xml Я добавил
<mvc:annotation-driven/>
и
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
В org.obliquid.restjson.web.ToDoList.java Я установил логическое имя представления как jsonView
.
Однако вместо использования MappingJacksonJsonView
он ищет файл JSP, в соответствии с моим отображением JSP.
message /restjson/WEB-INF/jsp/jsonView.jsp
description The requested resource (/restjson/WEB-INF/jsp/jsonView.jsp)
is not available.
Чтоя должен перейти на использование MappingJacksonJsonView
в качестве средства визуализации?
UPDATE 1 : В следующих тестах я обнаружил, что если я добавлю следующее в свой servlet-context.xml, рендеринг JSONработает, но мое другое представление, отображаемое как JSP (home), больше не работает.
<!-- Resolve views based on string names -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
UPDATE 2 : я удалил BeanNameViewResolver
и изменил свой ToDoList.java для возвратанепосредственно Коллекция для преобразования в JSON вместо ModelAndView с аннотацией @ResponseBody
следующим образом:
@RequestMapping("/toDoList")
public @ResponseBody List<ToDoItem> test() {
List<ToDoItem> toDoList = new ArrayList<ToDoItem>();
toDoList.add(new ToDoItem(1, "First thing, first"));
toDoList.add(new ToDoItem(1, "After that, do the second task"));
return toDoList;
}
Таким образом, это работает.Хотя отображение еще более «волшебное».Меня удивляет, если, например, существует похожий рендер для XML, как Spring узнает, какой рендер выбрать?