我有两个问题:
- 无法将我的参数自动绑定到 Java 对象中(它们是使用 AJAX 与 jQuery 一起发布的)
- 我收到 406 错误,我认为这意味着我无法返回我想要的 JSON 对象
我相信这两个问题是不同的,但两者的解决方案都依赖于代码的同一部分。请问你能帮帮我吗?提前非常感谢!
阿贾克斯请求
我正在尝试发布一个非常简单的对象,具有电子邮件和名称,就像这样。
var dataObject = {
name : this.userName,
email : this.userEmail,
};
this.$.ajax({
type : "POST",
url : '/stock-events/register-to-stock',
contentType: "application/json",
data : JSON.stringify(dataObject),
success : function(data) {
console.info("data");
},
dataType : 'json'
});
弹簧 MCV 控制器
@ResponseBody @RequestMapping(value = "/register-to-stock", method = RequestMethod.POST)
public StockAlarmJsonResponse submitForm(@Valid @RequestBody StockAlarmModel stockAlarm,
BindingResult result, Model m) {
System.out.println("hola");
System.out.println(stockAlarm);
StockAlarmJsonResponse response = new StockAlarmJsonResponse();
if (result.hasErrors()) {
System.out.println(result);
response.fail();
}else{
System.out.println(stockAlarm);
response.success();
}
return response;
}
模型
public class StockAlarmModel {
@NotNull @Max(100) @Email
private String email;
@Max(100)
private String name;
@Override
public String toString() {
return "Email: " + email + '\n' + "Name: " + name;
}
}
我在 Java 中遇到的错误(看起来参数不存在)
org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'stockAlarmModel' on field 'email': rejected value [null]; codes [NotNull.stockAlarmModel.email,NotNull.email,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [stockAlarmModel.email,email]; arguments []; default message [email]]; default message [may not be null]
我在 chrome 错误中遇到错误(看起来没有成功返回 json 对象)
POST http://localhost:8080/stock-events/register-to-stock 400 (Bad Request) jquery- 1.9.1.js:8526
send jquery-1.9.1.js:8526
jQuery.extend.ajax jquery-1.9.1.js:7978
StockAlarm.registerAlarm StockAlarm.js:131
(anonymous function) StockAlarm.js:87
jQuery.event.dispatch jquery-1.9.1.js:3074
elemData.handle
Chrome 错误显示请求的内容
内容类型/应用程序 Json
请求有效载荷:
{"name":"santiago","email":"santiago@tiendanube.com"}