2012-02-19 266 views
1

我使用Spring MVC与JSR303做我的输入验证。Spring MVC日期格式验证JSR303

我创建了一个形式,有几个被绑定到Date支持对象的形式对象中的日期字段。我正在使用JSR303使用@FutureDate进行验证。我也使用@DateTimeFormat(pattern="dd/MM/yyyy"),(我知道这不是验证)。

我如何验证String在窗体上的日期格式?如果我将其他必填字段留空(@NotEmpty),并以“dd/MM/yy”格式输入无效日期,则在重新呈现时将其转换为“dd/MM/yyyy”(例如12/03/12重新呈现为12/03/0012)。这意味着我将在我的系统中获得duff数据。如果我输入“aaa”,我得到一个转换异常。正确格式化String将被转换为Date对象。

此外,如果Date字段的'必填字段'注释为@NotNull@NotEmpty

非常感谢您提供的任何建议。

回答

2

感谢拉尔夫。我做了一些进一步挖掘各地以及与此(在我的表单控制器肚里)想出了:

@InitBinder 
    public void initBinder(WebDataBinder binder) { 


    String format = "dd/MM/yyyy"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat(format); 
    dateFormat.setLenient(false); 
    CustomDateEditor customDateEditor = new CustomDateEditor(dateFormat,true,format.length()); 

    binder.registerCustomEditor(Date.class, customDateEditor); 
    } 

随着性文件具有以下项:协助所有一些不错的平静令人欣慰的消息:

typeMismatch.java.util.Date过失用户

也许还有一些其他的方法可以做到这一点,但这样会为现在要做的。

+0

是否有可能从typeMismatch.java.util.Date更改消息键,更具体的像CommandObjectXYZ.dateXYZ =日期的东西是无效的 – svlada 2012-11-07 08:59:09