繁体   English   中英

使用JSR303进行Spring MVC日期格式验证

[英]Spring MVC Date format validation with JSR303

我正在使用带有JSR303的Spring MVC进行输入验证。

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

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

另外, Date字段的'required field'注释是@NotNull还是@NotEmpty

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

谢谢拉尔夫。 我做了一些进一步的挖掘,并提出了这个建议(在我的表单控制器中):

    @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 :一些不错的平静的令人放心的消息,可以帮助所有过失的用户

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

你无法用JSR303做到这一点,因为验证是在已经流行的(表单缓存)对象上运行的。

因此,您需要实现自己的自定义转换器,这比弹簧附带的转换器要严格得多。

@参见Spring参考:第6.5章Spring 3类型转换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM