【问题标题】:Spring MVC - RequestBody not working (JSON)Spring MVC - RequestBody 不工作(JSON)
【发布时间】:2013-12-04 10:30:38
【问题描述】:

我有一个简单的控制器方法:

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public void postCheck(@RequestBody TestDTO testDTO, HttpServletRequest request) {

System.out.println(testDTO);

}

DTO 是:

public class TestDTO {

private String hello;

public TestDTO() {

}

public String getHello() {
    return hello;
}

public void setHello(String hello) {
    this.hello = hello;
}

}

当我尝试向该 url 发布请求时,我收到错误 400 消息响应“客户端发送的请求在语法上不正确。” (根本没有调用控制器方法)

我尝试从 Chrome 的海报插件和 jquery 的 ajax 发布:

$.ajax({
    type : "POST",
    url : "http://localhost:8080/NG_Admin/test",
    contentType : "application/json",
    dataType : "json",      
    data : JSON.stringify(eval({"hello" : "world"})),
    error : function(data) {
        alert('Error');
    },
    success : function(data) {  
            alert('Success!');
    }
});
}

有什么想法吗? (顺便说一句,我同时使用'jackson-mapper-asl',版本:'1.9.12','jackson-core-asl',版本:'1.9.12')

谢谢

【问题讨论】:

  • @RequestMapping 中删除consumes = ... 是否有效 - 注释?我在这里有一些匹配的设置(spring 3.2.4,jackson 1.9.12,来自前端的 jquery post,也只能通过对我的 formmodel/dto 使用直接验证来扩展),只是缺少消耗 - 它就像一个魅力。但是......我看到你从客户端对json中的一些字符串进行字符串化......也可能是这样。我会尝试删除""
  • 仍然无法正常工作:(我是否必须配置 spring 才能与 jackson 一起使用?还是自动发生?

标签: json spring spring-mvc marshalling


【解决方案1】:

好的,我解决了这个问题,

必须为处理 CORS 访问的所有请求添加过滤器。

【讨论】:

  • 添加更多关于过滤器的信息可能对其他人有所帮助。请更新。
猜你喜欢
  • 2011-08-19
  • 2021-04-25
  • 1970-01-01
  • 2016-06-26
  • 2013-03-04
  • 2015-02-08
  • 2012-09-10
  • 2011-12-05
  • 2015-05-31
相关资源
最近更新 更多