【发布时间】:2022-11-01 14:43:46
【问题描述】:
我尝试在 Spring Boot 中使用自定义验证来验证日期。但是唯一的yyyy 没有验证年份,尽管dd 和MM 工作正常。
例如,
如果在 RequestBody 我将日期格式传递为
02/1k/2022,已正确验证,k2/12/2022 已正确验证,但
当我通过像02/12/2k22 这样的日期时,没有经过验证。
我想不通。
春季启动版本:2.3.0.发布
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
代码:
public class IsValidDateFormatValidator implements ConstraintValidator<IsValidDateFormat, String> {
@Override
public void initialize(IsValidDateFormat arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isValid(String arg0, ConstraintValidatorContext arg1) {
if (arg0 != null) {
if (arg0.trim().length() > 10) {
return false;
}
if (!arg0.isEmpty()) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
try {
sdf.parse(arg0);
} catch (ParseException e) {
return false;
}
}
}
return true;
}
}
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {IsValidDateFormatValidator.class})
@Documented
public @interface IsValidDateFormat {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
模型:
@NotEmpty(message = "dob {emptyDateValidationMsg}")
@IsValidDateFormat(message = "dob {dateFormatValidationMsg}")
@JsonProperty("dob")
private String dob;
请指出我犯了什么错误...
如果我通过 dateformat,相同的代码正在正确验证年份yyyy-MM-dd代替日/月/年
【问题讨论】:
标签: java spring-boot customvalidator