J'ai utilisé Internet pour un exemple qui utiliserait à la fois les contrôleurs spring-json et annotés, je suis nouveau au printemps, donc je n'ai pas eu de chance d'adapter la configuration au printemps- Les échantillons de json (il utilise SimpleController et autres)Aide pour spring-json utilisant des contrôleurs annotés
Actuellement, j'ai un contrôleur avec 2 mappings, l'un liste les résultats en html (et fonctionne), l'autre devrait rendre json pour certains appels ajax mais quand j'accède à l'url il renvoie un 404 et demande /myapp/jsp/jsonView.jsp. Le code sur la méthode show s'exécute et il valide même la présence du paramètre id, donc il semble que le problème est qu'il ne sait pas comment rendre, autant que je sache, c'est ce que fait le bean viewResolver.
Merci à l'avance pour toute aide :)
Voici ce que j'ai:
@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);
}
}
sur myapp-servlet.xml:
<bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>
sur 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>
Je ne considère, mais il y a déjà une part importante de l'application développé qui a 0 tests, ne peut pas se permettre de migrer cette partie ancienne :( – albemuth