我有一个 Java EE 应用程序,我想验证一个日期。 使用 String 我这样做:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 255)
private String myString;
但现在我有两个要验证的日期。用户可以在前端系统中的文本字段中写入一个字符串,该字符串将通过 JSON 传输(我必须使用文本字段,我不能使用日期选择器)。
所以我的后端在我的域类中确实有这个:
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myStartDate;
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myEndDate;
我想根据格式“dd.MM.yyyy”进行验证。如何做到这一点?
而且,我不这么认为,但是是否有自动验证来检查开始日期是否早于结束日期?我只找到了 @Future
和 @Past
。
所以唯一的解决办法是使用@Pattern,一个正则表达式?!
在此先感谢您的帮助,祝好。
最佳答案
@DateTimeFormat 在 Web 数据绑定(bind)期间使用,当将请求参数映射到对象时(假设您已使用 <mvc:annotation-driven/>
或手动启用它。)将 JSON 反序列化为对象时通常不会使用它。你是如何阅读你的 JSON 的?你用什么反序列化它?您无法在格式化之后验证 java Date 对象,您必须在反序列化之前预先检查。
没有内置的多字段约束。如果您想比较一个对象的两个属性,您需要编写自己的类型级别约束。
关于java - JSR 303 - javax.validation - 验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694863/