我正在尝试设置一个 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
类型。
但是,如果我将 firstDate
和 secondDate
声明为 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
类。
您可以使用 DateFormat
将 Date
转换为 String
,然后使用相同的 DateFormat
将其转换回>.
但是,这意味着您在 ProjectAssignment
中的分配字段必须是 String
类型。
关于Javax 验证约束 - 比较两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489525/