当前位置: 首页 > 知识库问答 >
问题:

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

淳于知
2023-03-14

我正在尝试设置一个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 {};


}

所以这里有一个问题:我试图将日期类型放入字符串类型。但是,如果我将我的第一个日期第二个日期声明为日期,则存在一个问题:

Invalid type Date for the annotation attribute `DateValidator.firstDate; 
only primitive type, `String`, `Class`, annotation, enumeration are permitted 
or 1-dimensional arrays thereof

还有其他方法来比较两次约会吗?

我错过了什么?

共有1个答案

桓喜
2023-03-14

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

您可以使用日期格式日期转换为字符串,然后使用相同的日期格式将其转换回。

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

 类似资料:
  • (仅在测试中使用)我有依赖项(没有spring或DI容器) 我可以通过 myDto在哪里 哪里 哪里 在这个验证器中,所有的工作都很完美,但没有任何注释或在现场发挥作用,他们只是被忽略了 请帮忙。断然的 很抱歉,我的真实案例是相互嵌套的DTO,所以只有高级类经过验证,但没有嵌套。 而另一个有注释的字段未经验证。当我在字段中添加时,它开始正常工作

  • 我使用的是Swagger(1.5.8),我想让我的定义检测DTO上的JSR-303注释,这样我就可以记录API的验证约束。 我希望注释(如本例)会显示关于最小值(44)的一些信息,但它不会。 由此产生的是: Swagger已经关闭了该功能的拉取请求,但我不清楚它在Swagger定义中的位置/方式。 我希望能够做这样的事情: 配置Swagger模块/插件以启用和等功能的首选方法是什么,以便他们检查我

  • 我有以下验证器,用于验证更新请求。 object.getIdCreditor()有一个值,但是findById方法的执行["CreditorRepository.findById(object.getIdCreditor())" ] 进入NullPointer异常 我不明白怎么了。

  • 我无法在我的Spring Boot应用程序中获得诸如@Not空、@NotBlank和@NotNull之类的注释。 我遵循了这个(maven)示例: https://spring.io/guides/gs/validating-form-input/ ...我不明白我做错了什么。 波乔: Spring控制器: 屏幕: 除了@NotBlank之外,我还尝试了@Not空和@NotNull,但发生了同样的

  • 我一直在尝试单元测试(不运行Spring容器)我的自定义约束注释,但当我运行测试时,会抛出NullPointerException,我不知道为什么会发生这种情况。 NullPointerException指出Validator类中的。 我一直在关注这个答案https://stackoverflow.com/a/41671471/9377513当我写测试的时候。但我不知道为什么这种方法在我的情况下不

  • 问题内容: 有人可以建议一种使用JavaScript 比较 两个 大于,小于和过去的 日期 的值的方法吗?这些值将来自文本框。 问题答案: 该Date对象会做你想要的东西- 构造一个每个日期,然后用它们进行比较,,或。 在,,,和运营商要求使用作为 要清楚的是,仅直接检查日期对象是否相等将不起作用 我建议您使用下拉列表或日期输入的某些类似约束形式,而不要使用文本框,以免您陷入输入验证的困境。