2012-02-29 60 views
1
$.ajax({ 
    cache:false, 
    type: 'POST', 
    url: "${saveDTO}", 
    data: mySubmitData, //a stringified json object, a form converted using toObject plugin 
    contentType: "application/json", 
    success: function(data) {    
    savedDialog.html(JSON.stringify(data) + "<br><br>"+mySubmitData); 
    } 
}); 

和控制器是:转换的json使用jquery POJO /春/杰克逊

public @ResponseBody MyDTO saveDTO(@Valid final MyDTO myDTO,BindingResult result, Model model){ 
System.out.println(myDTO.getMyField + " " + myDTO.getSecondField; 
return new MyDTO(); 
} 

输出我在对话框中显示得到这样的:

{"myField":null,"secondField":null} //new empty dto converted and returned spring 

{"myField":"RU","secondField":"13-02-12"} //submitted data, a form converted to json 

虽然我SYS出去控制台输出显示这两个字段都是空的,JSON没有约束!为什么? DTO本身只有两个私人领域与适当的获取/设置器

+1

添加“MyDTO”的代码 – beerbajay 2012-02-29 12:00:33

回答

0
//js 
var mySubmitData ='{"myField":"myFieldValue", "secondField":"secondFieldValue"}'; 
//dto 
public class MyDTO implements Serializable { 

    private String myField; 

    private String secondField; 

    MyDTO() {} //important 

    public void setMyField() { ...} 

    public void setSecondField() { ... } 
} 
//web resource 
    public @ResponseBody MyDTO saveDTO(@Valid final MyDTO myDTO,BindingResult result, Model model){ 
    System.out.println(myDTO.getMyField + " " + myDTO.getSecondField; 
     return myDTO; 
     //return new MyDTO(); //it's empy object if you don't have default values 
    } 
+0

好的尝试,你有点错过了关键点。 myDTO字段为空,则sys out print命令将删除null。我正在重新调整一个新对象来检查正确的映射。我认为问题出在我的串行器/解串器中 – NimChimpsky 2012-02-29 14:39:17