由于集群环境中的跨域问题,我正在尝试使用 jsonp 数据类型执行 ajax 请求。
我可以向没有 @RequestBody 参数的映射方法发出 jsonp 请求,但是当我尝试使用 @RequestBody 参数实现 RequestMapping 时,我收到 415 Unsupported Media Type 错误。
通常当我遇到这个问题时,这是由于发布的 json 对象和它在 Spring 中映射到的 Java 对象之间的某些属性没有正确映射。但我能找到的唯一差异是,使用 jsonp 它添加了一个名为回调的参数和一个名称为下划线“_”的参数
所以我将标签 @JsonIgnoreProperties(ignoreUnknown = true) 添加到我的 Java 对象中,并认为应该可以解决这个问题,但是它仍然抛出这个错误。
还有什么我需要做的吗?
编辑:我现在在 Spring 的调试日志输出中看到此堆栈跟踪: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported
$.ajax({
url : 'http://blah/blah.html',
data : { abc : '123' }, (I also tried to JSON.stringify the object but no difference)
dataType : 'jsonp',
success : function(response) {
alert('ok '+JSON.stringify(response));
},
fail : function(response) {
alert('error'+JSON.stringify(response));
}
});
弹簧控制器是:
@RequestMapping({ "blah/blah" })
@ResponseBody
public ReturnObject getBlahBlah (@RequestBody MyObject obj) throws Exception {
}
参数对象为:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyObject {
private String abc;
// getter and setter for abc auto generated by MyEclipse
}
我在 Controller 方法上有一个断点,它永远不会被命中。