出现这个错误的原因是,后台使用了
@RestController 前段传值过来的是json字符串,让要把字符串转换成时间格式的时候后台无法将字符串解析成时间格式对象,
解决方法:
在controller中加入@InitBinder注解的配置,配合参数转工具 WebDataBinder来进行参数转换
@RestController
public class DiscussionController {
@Autowired
DiscussionService discussionService;
@InitBinder //解决前段传过来时间的字符串解析成时间报错问题
public void initBinder(WebDataBinder webDataBinder){
webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
}
当然,可以将这方法提取出来做成BaseController,然后其他Controller继承base,这样保证所有的controller都能自动转换时间字符串了
@Controller
public class BaseController{
@InitBinder
public void initBinder(WebDataBinder webDataBinder){
webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
}
@Controller
public class DiscussionController extends BaseController{
//这样DiscussionController 也能自动转换日期格式字符串
}