我在 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 对象。

10-07 19:44