我是 Spring Rest 新手,在将 JSON 对象从 jquery 映射到控制器时遇到问题。我的 jquery JSON 对象缺少一些字段,这些字段存在于控制器上的 java 对象中。我是否必须创建新类来映射此类对象,或者有什么方法可以在不创建新类的情况下映射这些对象?
这是代码
控制器:
@RequestMapping(value = "/createTest", method = RequestMethod.POST,consumes="application/json")
@ResponseBody
public String createTest(@RequestBody TestJsonDTO testJson)
throws JsonProcessingException, IOException {
//....
测试JsonDTO:
public class TestJsonDTO {
private TestSet testSet;
private List<MainQuestion> questionsInTest;
//gettters and setters
TestSet:
public class TestSet implements Serializable {
public TestSet() {
}
@Id
@GeneratedValue
private int id;
private String name;
private int fullmark;
private int passmark;
String duration;
Date createDate = new Date();
Date testDate;
boolean isNegativeMarking;
boolean negativeMarkingValue;
主要问题:
public class MainQuestion implements Serializable {
private static final long serialVersionUID = 1L;
public MainQuestion() {
}
@Id
@GeneratedValue
private int id;
private String name;
和我的 jquery post 方法
function createTest() {
$.ajax({
type : 'POST',
url : "http://localhost:8085/annotationBased/admin/createTest",
dataType : "json",
contentType : "application/json",
data : testToJSON(),
success : function() {
alert("success")
},
error : function(msg) {
alert("error while saving test");
}
});
}
function testToJSON() {
listOfQuestionForTest = questionToAdd;//array of ids of questions
return JSON.stringify({
"testSet.name" : $('#testname').val(),
"testSet.fullmark" : parseInt($('#fullmark').val()),
"testSet.passmark" : parseInt($('#passmark').val()),
"questionsInTest" : listOfQuestionForTest
// "testDate":$('#testDate').value()
})
}
In JSON.stringify
我不会发送所有字段TestJsonDto
。我怎样才能映射这个?