JSR 303 - javax.validation - 验证日期

时间:2011-01-14 19:04:14

标签: java validation date

我有一个Java EE应用程序,我想验证一个Date。 使用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,一个正则表达式?!

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

1 个答案:

答案 0 :(得分:4)

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

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