Ich hätte gerne eine bidirektionale JSON-zu-Java-Serialisierung
Ich verwende erfolgreich den Pfad von Java zu JSON zu JQuery ... ( @ResponseBody
) z
@RequestMapping(value={"/fooBar/{id}"}, method=RequestMethod.GET)
public @ResponseBody FooBar getFooBar(
@PathVariable String id,
HttpServletResponse response , ModelMap model) {
response.setContentType("application/json");
...
}
und In JQuery verwende ich
$.getJSON('fooBar/1', function(data) {
//do something
});
Dies funktioniert gut (zB Anmerkungen funktionieren bereits, danke an alle Antwortenden)
Wie mache ich jedoch den umgekehrten Pfad: Muss JSON mithilfe von RequestBody wieder in ein Java-Objekt serialisiert werden?
Egal was ich versuche, ich kann so etwas nicht zum Laufen bringen:
@RequestMapping(value={"/fooBar/save"}, method=RequestMethod.POST)
public String saveFooBar(@RequestBody FooBar fooBar,
HttpServletResponse response , ModelMap model) {
//This method is never called. (it does when I remove the RequestBody...)
}
Ich habe Jackson richtig konfiguriert (es wird auf dem Weg nach draußen serialisiert) und ich habe MVC als Annotationen eingestellt, die natürlich gesteuert werden
Wie bringe ich es zum Laufen? ist es überhaupt möglich? oder ist Spring / JSON / JQuery oneway (out)?
Aktualisieren:
Ich habe diese Jackson-Einstellung geändert
<bean id="jsonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<!-- Bind the return value of the Rest service to the ResponseBody. -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list id="beanList">
<ref bean="jsonHttpMessageConverter" />
<!-- <ref bean="xmlMessageConverter" /> -->
</util:list>
</property>
</bean>
Zu dem (fast ähnlichen) vorgeschlagenen
<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter" />
</list>
</property>
</bean>
Und es scheint zu funktionieren! Ich weiß nicht genau, was den Trick gemacht hat, aber es funktioniert ...