JSR 303 - javax.validation - 验证日期

Tim*_*Tim 8 java validation date

我有一个Java EE应用程序,我想验证一个日期.使用String我这样做:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 255)
private String myString;
Run Code Online (Sandbox Code Playgroud)

但是现在我有两个日期要验证.用户可以在前端系统中在文本字段中写一个字符串,该字段将通过JSON传输(我必须使用文本字段,我不能使用datepicker).

所以我的后端确实在我的域类中有这个:

@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myStartDate;

@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myEndDate;
Run Code Online (Sandbox Code Playgroud)

我想验证格式"dd.MM.yyyy".如何才能做到这一点?

并且,我不这么认为,但是是否有自动验证来检查开始日期是否在结束日期之前?我才发现@Future@Past.

所以唯一的解决方案是使用@Pattern,一个正则表达式?!

提前感谢您的帮助,最诚挚的问候.

Aff*_*ffe 4

@DateTimeFormat 在 Web 数据绑定期间将请求参数映射到对象时使用(假设您已使用<mvc:annotation-driven/>或手动启用它)。将 JSON 反序列化为对象时通常不会使用它。你的 JSON 读得怎么样?你用什么来反序列化它?您无法在格式化之后验证 java Date 对象,您必须在反序列化之前进行预先检查。

没有内置的多字段约束。如果您想比较对象的两个属性,则需要编写自己的类型级别约束。