猿问

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

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>

而且看起来很管用!我不知道这到底是怎么回事,但它起作用了.



神不在的星期二
浏览 422回答 3
3回答

慕的地6264312

此外,您还需要确保&nbsp;<context:annotation-config/>在您的Spring配置XML中。我也建议你读这篇博文。它帮了我很多。Springblog-Spring3.0中的Ajax简化最新情况:刚刚检查了我的工作代码@RequestBody工作正常。我的配置中也有这个bean:<bean&nbsp;id="jacksonMessageConverter"&nbsp;class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> &nbsp;<bean&nbsp;class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property&nbsp;name="messageConverters"> &nbsp;&nbsp;<list> &nbsp;&nbsp;&nbsp;&nbsp;<ref&nbsp;bean="jacksonMessageConverter"/> &nbsp;&nbsp;</list></property></bean>也许很高兴能看到Log4j是在说。它通常提供更多的信息,根据我的经验@RequestBody如果请求的内容类型不是Application/JSON..您可以运行Fiddler 2来测试它,甚至MozillaLiveHTTP头插件也可以提供帮助。

郎朗坤

除了这里的答案.。如果您在客户端使用jQuery,这对我来说是有效的:Java:@RequestMapping(value&nbsp;=&nbsp;"/ajax/search/sync")&nbsp;public&nbsp;String&nbsp;sync(@RequestBody&nbsp;Foo&nbsp;json)&nbsp;{jQuery(需要包含DouglasCrocford的json2.js才能具有JSON.strgify函数):$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;"post", &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;"sync",&nbsp;//your&nbsp;valid&nbsp;url &nbsp;&nbsp;&nbsp;&nbsp;contentType:&nbsp;"application/json",&nbsp;//this&nbsp;is&nbsp;required&nbsp;for&nbsp;spring&nbsp;3&nbsp;-&nbsp;ajax&nbsp;to&nbsp;work&nbsp;(at&nbsp;least&nbsp;for&nbsp;me) &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;JSON.stringify(jsonobject),&nbsp;//json&nbsp;object&nbsp;or&nbsp;array&nbsp;of&nbsp;json&nbsp;objects &nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function(result)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//do&nbsp;nothing &nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;function(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('failure'); &nbsp;&nbsp;&nbsp;&nbsp;}});
随时随地看视频慕课网APP

相关分类

JQuery
我要回答