如何将CustomDateEditor绑定到Springframework中的所有Date字段?

时间:2009-12-10 12:05:38

标签: java spring

我有一个dataBind,它具有很少的属性以及bean列表,而bean的一个属性是Date类型。现在我想将customDateEditor添加到此日期字段中 我的Databind是这样的:

    public class myDataBind{
       /* 
    some attributes here
    */

List myList = new ArrayList();  // List of myBean

/*
  accessor and mutators here
*/
    }

public class myBean{
       /* 
    some attributes here
    */

  private Date fromDate = null;
  private Date toDate = null;

/*
  accessor and mutators here
*/

}

在我的控制器中我有

protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {       
    super.initBinder(request, binder);
    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"){{ setLenient(false);}},false)); // Date.class is java.sql.Date.class    
}

但我仍然得到错误 字段'myList [0] .fromDate'中对象'command'中的字段错误:被拒绝的值[2009-05-27];代码[typeMismatch.command.myList [0]。fromDate,typeMismatch.command.myList.fromDate,typeMismatch.myList [0] .fromDate,typeMismatch.myList.fromDate,typeMismatch.fromDate,typeMismatch.java.sql.Date,typeMismatch] ; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:codes [command.myList [0] .fromDate,myList [0] .fromDate];参数[];默认消息[myList [0] .fromDate]];默认消息[无法将类型[java.lang.String]的属性值转换为属性'myList [0] .fromDate'的必需类型[java.sql.Date];嵌套异常是java.lang.IllegalArgumentException:无法将类型[java.lang.String]的值转换为属性'fromDate'的必需类型[java.sql.Date]:找不到匹配的编辑器或转换策略]

请告诉我,我错过了哪一步。

4 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但是:你需要调用super.initBinder(request,binder)吗?

答案 1 :(得分:0)

我使用Spring的验证框架已经有一段时间了。通过查看您提供的代码和详细信息,我没有发现任何差异。我在查看代码时注意到的唯一区别是我首先创建了CustomDateEditor,使用binder注册了它,然后调用了super.initBinder。

只是出于好奇,你有没有试过这样的事情

protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {               
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"){{ setLenient(false);}},false));
        super.initBinder(request, binder);
}

答案 2 :(得分:0)

在错误中它提到'java.sql.Date' - 在你的自定义属性编辑器和bean类中都是引用java.sql.Date或java.util.Date的Date类?

即。你有没有在所有地方导入预定的Date类?

答案 3 :(得分:0)

CustomDateEditor只能用于java.util.Date

这在课程documentation中有记录。