为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery、SpringMVC@RequestBody和JSON-使其协同工作

jQuery、SpringMVC@RequestBody和JSON-使其协同工作

神不在的星期二 2019-08-03 07:03:10
jQuery、SpringMVC@RequestBody和JSON-使其协同工作我希望有一个指向Java序列化的双向JSON我在用成功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});这行得通井(例如,由于所有的答案,注解已经起作用了)然而,我如何做倒转PATH:是否使用RequestBody将JSON序列化回Java对象?不管我怎么尝试,我都无法做到这样的事情:@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...)}我已经正确配置了Jackson(它在输出时序列化),当然,我有mvc集作为注释驱动。我该怎么做呢?有可能吗?或者Spring/JSON/JQuery是单向的(Out)?最新情况:我改变了杰克逊的背景<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>而且看起来很管用!我不知道这到底是怎么回事,但它起作用了.
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

此外,您还需要确保

 <context:annotation-config/>

在您的Spring配置XML中。

我也建议你读这篇博文。它帮了我很多。Springblog-Spring3.0中的Ajax简化

最新情况:

刚刚检查了我的工作代码@RequestBody工作正常。我的配置中也有这个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>

也许很高兴能看到Log4j是在说。它通常提供更多的信息,根据我的经验@RequestBody如果请求的内容类型不是Application/JSON..您可以运行Fiddler 2来测试它,甚至MozillaLiveHTTP头插件也可以提供帮助。




查看完整回答
反对 回复 2019-08-05
?
郎朗坤

TA贡献1921条经验 获得超9个赞

除了这里的答案.。

如果您在客户端使用jQuery,这对我来说是有效的:

Java:

@RequestMapping(value = "/ajax/search/sync") public String sync(@RequestBody Foo json) {

jQuery(需要包含DouglasCrocford的json2.js才能具有JSON.strgify函数):

$.ajax({
    type: "post",
    url: "sync", //your valid url
    contentType: "application/json", //this is required for spring 3 - ajax to work (at least for me)
    data: JSON.stringify(jsonobject), //json object or array of json objects
    success: function(result) {
        //do nothing
    },
    error: function(){
        alert('failure');
    }});




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 421 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信