我在 Spring 3 + Hibernate 的表单提交中有两个日期。
@Column(name = "FinStartDate")
私有(private)日期 finStartDate;
@Column(name = "FinEndDate")
private Date finEndDate;
我根据某些标准显示/隐藏日期。当日期被隐藏并提交表单时,出现以下错误
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'register' on field 'obj.finEndDate': rejected value []; codes [typeMismatch]
如何避免这个问题。
最佳答案
我认为您错过了将日期字符串转换为日期对象的格式化程序。
您可以尝试注释您的字段
@DateTimeFormat(pattern = "yyyy-MM-dd")
或者在您的 Controller 中声明一个 initbinder,例如:
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(
dateFormat, false));
}
或者,您可以在 mvc 配置文件中声明一个格式化程序,它将格式化您的应用程序绑定(bind)到的每个 Date 对象。