【发布时间】:2018-07-10 20:36:12
【问题描述】:
我正在尝试使用 jquery ajax 将 json 对象形式 javascript 传递给 Spring 控制器。但如果json 对象很复杂,则它不会绑定。
Javascript:
var inputParam={};
inputParam.name="xxx";
inputParam.address.city="chicago";
inputParam.address.zip="123456";
var jqxhr = $.ajax({
url:"/myurl",
type:"POST",
dataType: "html",
contentType :'application/json',
data:JSON.stringify(inputparam),
beforeSend: function( xhr ) {
}
});
//Handle a successful call to data service
jqxhr.done(function( data, textStatus, jqxhr,response ) {
// my successful code handle
});
//Handle an unsuccessful call to data service
jqxhr.fail(function(jqXHR, textStatus) {
//my error handling code
});
控制器:
@RequestMapping(value = "/myurl", method = RequestMethod.POST)
public String getMyPage( @RequestBody InputParams inputParam,HttpServletRequest request, Model model ) throws Exception{
//my code
}
POJO:
class InputParams {
private String name;
private Address address;
//getter setter
}
class Address{
private String city;
private String zip;
//getter setter
}
我遇到的问题是地址没有绑定到控制器上。
知道我在这里做错了什么吗?
【问题讨论】:
-
请在 InputParams 类中提供正确的参数“名称”类型。
-
您的 JS 代码抛出异常。您的 Java 代码无法编译。贴出真实代码。
-
我无法输入所有控制器代码。这也没有必要。我的问题是从 ajax 传递的 inputParam 在控制器端没有绑定。
-
如果那是您的真实代码,那么您的 AJAX 请求甚至无法发送。贴出真实代码。
-
当数据发布到您的后端或只是
null时,您是否收到错误或抛出异常?