我试图设置一个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

有没有其他方法可以比较两个日期?
我错过了什么?

最佳答案

由于Java注释不能接受Date字段,因此需要使用String类。
您可以使用Date将aString转换为aDateFormat,然后使用相同的DateFormat将其转换回。
但是,这意味着您在ProjectAssignment中的赋值字段必须是String类型。

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

10-09 15:42