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

时间:2013-10-21 08:29:14

标签: java validation date gwt javabeans

我尝试设置javax验证,以便将两个日期相互比较。 一个日期应该小于另一个。

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

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

豆:

@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;
}

注解的接口:

@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个日期?

我错过了什么?

1 个答案:

答案 0 :(得分:1)

由于Java注释无法接受Date字段,因此您需要使用String类。

您可以使用DateString转换为DateFormat,然后使用相同的DateFormat将其转换回来。

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