Я хотел бы иметь двунаправленную сериализацию JSON для Java
Я использую успешно Java для JSON для JQuery-пути... (@ResponseBody
)
например
@RequestMapping(value={"/fooBar/{id}"}, method=RequestMethod.GET)
public @ResponseBody FooBar getFooBar(
@PathVariable String id,
HttpServletResponse response , ModelMap model) {
response.setContentType("application/json");
...
}
и в JQuery я использую
$.getJSON('fooBar/1', function(data) {
//do something
});
это работает хорошо (например, аннотации уже работают, благодаря всем ответчикам)
Однако, как мне сделать обратный путь: запустите JSON для Java-объекта с помощью RequestBody?
независимо от того, что я пытаюсь, я не могу заставить что-то вроде этого работать:
@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...)
}
Я правильно настроил Джексон (он сериализуется на выходе), и у меня есть MVC, установленный как аннотации, конечно,
Как мне заставить его работать? Это вообще возможно? или есть Spring/JSON/JQuery - oneway (out)?
Update:
Я изменил эту настройку Джексона
<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>
К (почти аналогичному) предложено
<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>
И это работает! Я не знаю, что именно сделал трюк, но он работает...