总结:
1:一般最常见的就是后台的实体类bean与前台穿过的类型不匹配,如你的javabean中有定义了Date类型和int类型的成员变量,导致转化器在把json数据转化成bean时不能转化。(常见)
解决:表单中的<input/>
里的name属性的值是否与自己创建的实体类属性一一对应(区分大小写)
2:要返回json的却忘了加@ResponseBody
3.传递了不属于实体类的属性过来,而Controller中标明了接受的时实体类属性
4.提交表单中有Date属性的值,也就是实体类中有Date属性(常见)
解决方法:
1.实体类中加上 @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)注解
//拍卖开始时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date begintime;
//拍卖结束时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endtime;
2.把实体类的javabean里边的类型都改成string类型,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再java中用到这个字符串类型的日期的话,有必要的话,就用For format=new SimpleDateFormat(“yyyy-MM-dd”),format.parse()来转换。
3.控制器中加入一段数据绑定的代码
//将字符串转换为Date类
@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {
//转换日期格式
DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//注册自定义的编辑器
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
form的序列化提交表单带过去的参数全都被序列化成了字符串类型,后端的字段类型如果是int、date等类型的需要手动将set方法给转换一下,转换方法上面一大堆中有。