Java 使用自定义验证对REST端点参数与LocalDate进行验证

Java 使用自定义验证对REST端点参数与LocalDate进行验证,java,validation,spring-boot,bean-validation,hibernate-validator,Java,Validation,Spring Boot,Bean Validation,Hibernate Validator,我已经使用SpringBoot构建了一个REST服务。在其中一个端点上,我将一个日期与一个请求参数以及另外两个参数一起发布。发布后,请求参数被绑定到一个对象。日期与LocalDate字段绑定。在发布之后但在绑定之前,我喜欢使用validation和Hibernate Validator验证请求参数。没有可用的LocalDate验证,因此我需要为LocalDate编写自定义验证 这是发布到端点的内容: /parameter-dates?parameterDateUnadjusted=2017-02

我已经使用SpringBoot构建了一个REST服务。在其中一个端点上,我将一个日期与一个请求参数以及另外两个参数一起发布。发布后,请求参数被绑定到一个对象。日期与
LocalDate
字段绑定。在发布之后但在绑定之前,我喜欢使用validation和Hibernate Validator验证请求参数。没有可用的
LocalDate
验证,因此我需要为
LocalDate
编写自定义验证

这是发布到端点的内容:

/parameter-dates?parameterDateUnadjusted=2017-02-29&limit=5&direction=d
@GetMapping(value = "/parameter-dates")
public ResponseEntity getParameterDates(@Valid ParameterDateRequest parameterDateRequest, Errors errors) {
// DO SOME STUFF
}
以下是端点的代码:

/parameter-dates?parameterDateUnadjusted=2017-02-29&limit=5&direction=d
@GetMapping(value = "/parameter-dates")
public ResponseEntity getParameterDates(@Valid ParameterDateRequest parameterDateRequest, Errors errors) {
// DO SOME STUFF
}
以下是用于对象的模型:

@Component
@Data
public class ParameterDateRequest {

    @MyDateFormatCheck(pattern = "yyyy-MM-dd", message = "Date not matching")
    LocalDate parameterDateUnadjusted;
    @NotEmpty(message = "Direction can't be empty")
    String direction;
    @Digits(integer=1, fraction=0, message = "Limit has to be an integer of max 100 000")
    int limit;
}
以下是验证注释的代码:

@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = MyDateFormatCheckValidator.class)
@Documented
public @interface MyDateFormatCheck {
    String pattern();
    String message();

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
@Target({字段、方法、参数、注释类型})
@保留(运行时)
@约束(validatedBy=MyDateFormatCheckValidator.class)
@记录
public@interface MyDateFormatCheck{
字符串模式();
字符串消息();
类[]组()默认值{};

类我认为您要查找的是-annotation。当值已经绑定到
LocalDate
时,验证日期格式没有意义