[英]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做到这一点,因为验证是在已经流行的(表单缓存)对象上运行的。
因此,您需要实现自己的自定义转换器,这比弹簧附带的转换器要严格得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.