Failed to convert value of type 'java.lang.String' to required type 'java.util.Date';

今天小编写新项目向数据库插入数据时遇到了一个小阻碍,当前端form表单提交数据时后端controller就报了标题的错,原因是前端提交到后端的数据时string类型的,而实体类中需要的是date型的数据,所以报了这个错误~

ajax代码:

$.ajax({
    type: 'POST',
    url: '/zouni',
    data: $("#myForm").serialize(),
    dataType: 'json',
    success: function(result){
        if(result.state == 200) {
            alert('添加成功');
        } else {
            alert('添加失败');
        }
        return false;
    }
});

controller代码:为了简便小编就只写了一条set语句就是这条set语句报了错

@RequestMapping(value = "/zouni", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
BaseResult zouni(Haha haha) {
    haha.setstartTime(haha.getstartTime);
    Haha info = hahaService.save(haha);
    return BaseResult.ok();
}

解决方法如下,在你对应的controller里加上如下代码

@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {		
    //转换日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //CustomDateEditor为自定义日期编辑器
    binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf , true));
}

注意不要忘了注解,这样controller接收前端数据时会将string类型的日期转换成date类型的数据

你可能感兴趣的:(前端,Java后端)