【问题标题】:got 400 error after jQuery send json request to spring mvc serverjQuery 向 spring mvc 服务器发送 json 请求后出现 400 错误
【发布时间】:2012-10-16 17:39:05
【问题描述】:

我的spring3.1 mvc服务器可以通过添加@ResponseBody来响应正确的json结果,在spring设置文件上应该没有问题。包含的servlet.xml

<mvc:annotation-driven/>

我把杰克逊罐子放在类路径中。

而且我的 html 文件还在 .ajaxSetup() 方法中将 contentType 设置为“application/json”。我可以看到帖子标题在 Firebug 中是正确的。

我也试过 include json2.js 来调用 JSON.stringify 方法。

json格式示例:

{"link":"http:xxxxx","ticker":"xxxxx"}

responseBody 类是 Document:

public class Document implements Serializable{
   public String getLink(){...}
   public String setLink(String link){...}
   public String getTicker(){...}
   public String setTicker(String ticker){...}
}

控制器代码:

public class LoadFile  {                                                                                                                                                                                                                                                                                                                                                                         

    @RequestMapping(value="/loadFile",method=RequestMethod.POST)                                                                                                                                                  
    public @ResponseBody Document loadFile(@RequestBody Document document){ 
        ...
    }
}

html代码:

$(function() {                                                                                                                                                                                                   
    $.ajaxSetup({                                                                                                                                                                                               
        contentType:"application/json;charset=utf-8" 
    });                                                                                                                                                       
    $.post( url, { link: link, ticker:ticker },                                                                                                                                            
        function( data ) {  
           ....
        },"json"
    );
}

Document类添加@ResponseBody时可以返回json对象,但是添加@RequestBody时,服务器返回400错误。不知道会发生什么。

【问题讨论】:

  • 能否提供更多代码、javascript和控制器代码?
  • fixed by reference [link]stackoverflow.com/questions/5908466/…我猜gae jackson lib和spring有冲突,所以必须明确转换器包名。但仍然使用 RequestBody,而不是 ModelAttribute

标签: jquery json spring-mvc


【解决方案1】:

@RequestBody 替换为@ModelAttribute

【讨论】:

  • 方法被调用但文档的属性为空。基础 spring 文档,它可以从表单或会话创建文档。如何从 jquery post 创建文档?
  • 它应该可以工作,确保 link 和ticker 有一个值。你可以在 firebug 上查看它们
  • firebug 显示这两个参数值正确但服务器端的文档仍然没有任何属性。
【解决方案2】:

我最近遇到了类似的问题。对我来说,它是在变量名周围添加“”,这给了我 400 错误。试试这样:

{link:"http:xxxxx",ticker:"xxxxx"}

还要确保您的变量与您的数据库相对应,这取决于 Spring3.1 处理数据的方式。 (例如以正确的顺序)

希望对你有帮助。

【讨论】:

  • 对不起,我的 json 样本来自 firebug。但代码是 {link:"http:xxxxx",ticker:"xxxxx"},所以应该不是原因
猜你喜欢
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
相关资源
最近更新 更多