Я пробовал интернет для примера, который будет использовать как пружинные джон, так и аннотированные контроллеры. Я новичок в весне, поэтому мне не повезло, json's samples (он использует SimpleController et al.)Помогите с использованием Spring-json с помощью аннотированных контроллеров
В настоящее время у меня есть контроллер с 2 сопоставлениями, один выводит результаты в html (и работает), другой должен отображать json для некоторых вызовов ajax, но когда я обращаюсь к URL-адресу, возвращает 404 и запрашивает /myapp/jsp/jsonView.jsp. Код в методе show выполняется, и он даже проверяет наличие параметра id, поэтому кажется, что проблема в том, что он не знает, как сделать рендеринг, насколько я знаю, это то, что делает компонент viewResolver.
Заранее спасибо за любую помощь :)
Вот что я получил:
@Controller
public class ItemController {
//This one works
@RequestMapping(value = "/items", method = RequestMethod.GET)
public ModelMap list() {
ModelMap map = new ModelMap();
map.addAttribute("item", "value");
return map;
}
//This one returns 404, asks for jsonView.jsp
@RequestMapping(value = "/items.json", method = RequestMethod.GET)
public ModelAndView show(@RequestParam(value = "id", required = true) String id) {
Map model = new HashMap();
model.put("firstname", "Peter");
model.put("secondname", "Schmitt");
return new ModelAndView("jsonView", model);
}
}
на MYAPP-servlet.xml:
<bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>
на views.xml:
<beans>
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView">
<property name="encoding">
<value>UTF-8</value>
</property>
<property name="contentType">
<value>application/json</value>
</property>
<property name="jsonWriter">
<ref bean="sojoJsonWriter"/>
</property>
<property name="jsonErrors">
<list>
<ref bean="statusError"/>
<ref bean="modelflagError"/>
</list>
</property>
</bean>
<bean name="sojoJsonWriter" class="org.springframework.web.servlet.view.json.writer.sojo.SojoJsonStringWriter">
<property name="convertAllMapValues">
<value>true</value>
</property>
</bean>
<bean name="statusError" class="org.springframework.web.servlet.view.json.error.HttpStatusError">
<property name="errorCode">
<value>311</value>
</property>
</bean>
<bean name="modelflagError" class="org.springframework.web.servlet.view.json.error.ModelFlagError">
<property name="name">
<value>failure</value>
</property>
<property name="value">
<value>true</value>
</property>
</bean>
web.xml:
<servlet>
<servlet-name>myapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myapp</servlet-name>
<url-pattern>/myapp/*</url-pattern>
</servlet-mapping>
Я считаю, но уже есть важная часть приложения разработанный, который имеет 0 тестов, не может позволить себе перенести эту старую часть :( – albemuth