2013-10-21 26 views
2

我试图设置一个javax验证来比较两个日期。 一个日期应该比另一个少。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类型。 但如果我声明我firstDatesecondDateDate,有一个问题:

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

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

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

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