【发布时间】:2017-12-14 17:06:25
【问题描述】:
我想用 JQuery 向 Spring 控制器发送一个 POST 请求,但我不断从 jquery 收到此错误
Could not read document: Unrecognized token 'contactForm': was expecting ('true', 'false' or 'null')
at [Source: java.io.PushbackInputStream@38220bcd; line: 1, column: 13]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'contactForm': was expecting ('true', 'false' or 'null')
at [Source: java.io.PushbackInputStream@38220bcd; line: 1, column: 13]
这是 POST 请求
$('#contactForm').on('submit', function(e){
e.preventDefault();
var contactForm = new Object;
var firstName = $('#firstName').val();
var lastName = $('#lastName').val();
var email = $('#email').val();
var message = $('#message').val();
contactForm.firstName = firstName;
contactForm.lastName = lastName;
contactForm.email = email;
contactForm.message = message;
contactForm.accepted = true;
console.log(JSON.stringify(contactForm));
$.ajax({
type: 'POST',
url: '/checkContact.json',
contentType : 'application/json; charset=utf-8',
dataType: 'json',
data: {
contactForm: JSON.stringify(contactForm)
},
success: function(response){
console.log(response)
$('#success').text(response.message);
},
error: function(data){
console.log(data.responseJSON.message);
}
})
})
这是控制器
@PostMapping("/checkContact.json")
public @ResponseBody String sendContactForm(@Valid @RequestBody ContactForm contactForm, BindingResult result, HttpServletRequest request) throws MalformedURLException, JsonProcessingException{
//logic here
}
和联系表格
public class ContactForm {
@NotNull
@NotEmpty
@ValidEmail
private String email;
@NotNull
@NotEmpty
private String firstName;
@NotNull
@NotEmpty
private String lastName;
@NotNull
@NotEmpty
private String message;
// @AssertTrue
private boolean accepted;
//getters and setters
}
我不知道到底发生了什么,因为例如,如果我尝试向控制器发送一个带有 POSTMAN 的 JSON 和这个 body,这与 JSON.stringify(contactForm) 相同,一切顺利,所以杰克逊在幕后做了一些奇怪的事情......
{
"fistName": "John",
"lastName": "Smith",
"email": "a@a.aa",
"message": "Hello"
"accepted":true
}
【问题讨论】: