在实践中发现,当使用一个类Son继承父类Father,对前端传来的数据进行自动装配成Son,Ajax方式和Form表单方式存在一个差异:
Father.java
public class Father{
private int id;
private String home;
setter and getter.....
}
Son.java
public class Son extends Father{
private String interest;
private String school;
setter and getter.....
}
Ajax传值时
在处理方法,对参数使用注释@RequestBody,可以将数据封装到子类Son。
@RequestMapping("/save")
public String saveSon(@RequestBody Son son){
System.out.println(son.getInterest());
return "....";
}
ajax传递包括父类Father的属性都是可以传递过来并自动装配到Son类中的。
Form表单传值时
在处理方法时,不能使用@RequestBody,而是直接使用类型参数进行自动装配
@RequestMapping("/save")
public String saveSon(Son son){
System.out.println(son.getInterest());
return "....";
}
Form表单传递包括父类Father的属性时,自动装配到Son类中会报异常,所以只能传递Son类独有的两个属性进行自动装配。
这一点非常坑诶,弄了好久都没解决,求大神看到了帮忙!!!!!!
问题:Form表单 自动装配 和 Ajax提交 @RequestBody自动装配
原文:http://my.oschina.net/u/1020238/blog/528265