java - 使用 Spring Boot 或 Hibernate Validator 验证日期

标签 java spring validation spring-boot hibernate-validator

我已经使用 Spring Boot 构建了一个 REST 服务。我也在使用 Hibernate Validator 来验证数据。我有一个像这样的 REST 端点:

@PostMapping(value = "${apiVersion.v_1}" + "/parameter-dates")
    public ResponseEntity createParameterDate( @RequestBody ParameterDate parameterDate){
// Some code that use parameterDate
}
ParameterDate在这样的类中定义:
public class ParameterDate {

    @NotNull(message = "Parameter Date Unadjusted can not be blank or null")
    private Date parameterDateUnadjusted;
    @NotNull(message = "Parameter Date Adjusted can not be blank or null")
    private Date parameterDateAdjusted;
    private Date parameterDateAdded;
    private Date parameterDateChanged;    
}

我想验证 parameterDateUnadjustedparameterDateAdjusted以确保它们都是有效日期。我试过 @DateTimeFormat(pattern = "yyyy-MM-dd")但只要他们坚持 yyyy-MM-dd,它就不会因为没有验证而给我一个验证错误。 .一个例子是 2017-01-40它只是解释为 2017-02-09 .我猜 @DateTimeFormat与其说是 validator ,不如说是格式化程序。我也尝试使用 Hibernate Validator 的 @Patternrexexp喜欢 @Pattern(regexp="\\t(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d\\t") .但这给了我错误
V000030: No validator could be found for constraint 'javax.validation.constraints.Pattern' validating type 'java.util.Date'. Check configuration for 'parameterDateAdjusted'
有什么建议可以验证这些日期吗?

最佳答案

以下是为 Date 对象实现 validator 的示例:

@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyDateValidator.class)
@Documented
public @interface ValidDate {

    String message() default "some message here";

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

    Class<? extends Payload>[] payload() default { };
}

public class MyDateValidator implements ConstraintValidator<ValidDate, Date> {
   public void initialize(ValidDate constraint) {
   }

   public boolean isValid(Date value, ConstraintValidatorContext context) {
      // validate the value here.
   }
}

关于java - 使用 Spring Boot 或 Hibernate Validator 验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376401/

相关文章:

java - 首次授权 Mifare Plus 卡

java - Antlr主类错误: MyListener cannot be resolved to a type

java - 关于用 Java 编写自定义类异常

java - 当 @NotEmpty 用于返回类型时,hibernate validator 错误

java - servlet [dispatcherServlet] 在路径 [] 上下文中的 Servlet.service() 抛出异常

java - Spring .properties 文件 : get element as an Array

java - 如何设置类名?

java - 我需要对基于 Spring 的 Rest Web 服务进行验证

validation - 角度 Material 中的结束日期 > 开始日期

javascript - 从 html 输入中获取非类型内容