Javax 验证约束 - 比较两个日期

标签 java validation date gwt javabeans

我正在尝试设置一个 javax 验证来比较两个日期。 一个日期应小于另一个。

另外,我为我的两个日期创建了一个自定义约束。但问题是,我的注释接口(interface)无法处理非原始数据类型。

这是我的代码:(我知道这是错误的,但如果我显示我的来源,也许你能理解我的问题)

bean 类:

@DateValidator(firstDate="assignmentStart", secondDate="assignmentEnd")
public class ProjectAssignment implements IsSerializable {

   private String id;
   private Project project;
   private String projectResponsibility;

   private Date assignmentStart;
   private Date assignmentEnd;
}

注解接口(interface):

@Target({ TYPE, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = DateValidatorImpl.class)
public @interface DateValidator {

String firstDate();
String secondDate();

String message() default "";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};


}

所以这是一个问题:我尝试将 Date 类型放入 String 类型。 但是,如果我将 firstDatesecondDate 声明为 Date,则会出现问题:

Invalid type Date for the annotation attribute `DateValidator.firstDate; 
only primitive type, `String`, `Class`, annotation, enumeration are permitted 
or 1-dimensional arrays thereof

还有其他方法可以相互比较 2 个日期吗?

我错过了什么?

最佳答案

由于 Java 注释不能接受 Date 字段,您将需要使用 String 类。

您可以使用 DateFormatDate 转换为 String,然后使用相同的 DateFormat 将其转换回>.

但是,这意味着您在 ProjectAssignment 中的分配字段必须是 String 类型。

关于Javax 验证约束 - 比较两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489525/

相关文章:

java - 在 Java 中的 Android fragment 之间进行通信

java - Spring + RxJava + 安排 cron 作业 : why beans called only once on connectable observable

java比较方法违反了它的一般契约

ruby-on-rails - 更改 Paperclip 中的错误验证消息

jquery - 更改日期格式验证、mvc 3 和 jQuery

python - 转换日期对象中的字符串(包含其他字符串) - Python

vba - Excel VBA 替换弄乱了日期格式,而手动替换有效

java - 具有RESTful服务/API的基于Java的CMS,用于访问内容

html - 如何防止浏览器尝试自动验证电子邮件地址字段?

PHP格式日期