在实践中发现,当使用一个类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