3

我正在尝试设置一个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类型中。但是,如果我将我的firstDateand声明secondDate为 a 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 个日期?

我错过了什么?

4

1 回答 1

1

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

您可以将 a 转换DateStringwith DateFormat,然后再将其转换回 with DateFormat

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

于 2013-10-21T09:05:32.980 回答