报错详情
2021-04-02 14:13:44.191 [http-nio-8103-exec-4] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:108)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:140)
at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:55)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:73)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:127)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:120)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:552)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:515)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:485)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:447)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:397)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:173)
Controller接参代码
@PostMapping("/add")
@ApiOperation(value = "添加活动信息")
public Result<ActivityVo> activityAdd(@RequestBody @Valid ActivityDTO activityDTO) throws UnsupportedEncodingException {
return activityService.activityAdd(activityDTO);
}
接参实体类
package com.qingke.studytour.manager.entity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author Even
* @Title:
* @Package
* @Description:
* @date 2021/3/22 10:41
*/
@Data
public class ActivityDTO {
@ApiModelProperty(value = "大活动Id")
private Long activityId;
@ApiModelProperty(value = "子活动Id")
private Long id;
@ApiModelProperty(value = "活动名称")
@NotBlank(message = "活动名称不能为空")
private String activityName;
@NotBlank(message = "活动开始时间不能为空")
@ApiModelProperty(value = "活动开始时间")
private Date activityStartTime;
@NotBlank(message = "活动结束时间不能为空")
@ApiModelProperty(value = "活动结束时间")
private Date activityEndTime;
@NotBlank(message = "报名开始时间不能为空")
@ApiModelProperty(value = "报名开始时间")
private Date applyStartTime;
@NotBlank(message = "报名结束时间不能为空")
@ApiModelProperty(value = "报名结束时间")
private Date applyEndTime;
@NotBlank(message = "报名费不能为空")
@ApiModelProperty(value = "报名费")
private BigDecimal applyAmount;
@NotBlank(message = "学校不能为空")
@ApiModelProperty(value = "学校ID")
private Long schoolId;
@ApiModelProperty(value = "学校名称")
private String schoolName;
@NotBlank(message = "负责人不能为空")
@ApiModelProperty(value = "负责人Id")
private Long activityPrincipalId;
@ApiModelProperty(value = "负责人姓名")
private String activityPrincipalName;
@NotBlank(message = "分享标题不能为空")
@ApiModelProperty(value = "分享标题")
private String shareTitle;
@NotBlank(message = "分享图片不能为空")
@ApiModelProperty(value = "分享图片")
private String shareImgs;
@NotBlank(message = "活动图片不能为空")
@ApiModelProperty(value = "活动图片")
private String activityImgs;
@ApiModelProperty(value = "活动行程描述")
private String activityRemark;
}
关键报错
No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’
尝试使用javax.validation.constraints.NotEmpty注解
2021-04-02 14:21:54.880 [http-nio-8103-exec-5] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotEmpty’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotEmpty’ validating type ‘java.util.Date’. Check configuration for ‘activityStartTime’
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:108)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:140)
at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:55)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:73)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:127)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:120)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:552)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:515)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:485)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:447)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:397)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:173)
使用javax.validation.constraints.NotNull注解日期类型
[] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.math.BigDecimal’. Check configuration for ‘applyAmount’] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.math.BigDecimal’. Check configuration for ‘applyAmount’
No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.lang.Long’. Check configuration for ‘schoolId’] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.lang.Long’. Check configuration for ‘schoolId’
No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.lang.Long’. Check configuration for ‘activityPrincipalId’] with root cause
@NotBlank注解源码
可以看到该注解支持校验类型CharSequence类型的实体对象
The annotated element must not be {@code null} and must contain at least one
- non-whitespace character. Accepts {@code CharSequence}.
在Spring项目中遇到使用@NotBlank注解校验Date类型参数时,抛出UnexpectedTypeException,提示找不到合适的校验器。尝试更换为@NotEmpty和@NotNull注解同样报错,问题在于@NotBlank不适用于非CharSequence类型。解决方案是避免对Date类型使用这些注解,考虑使用@NotNull或其他适合的验证方式。
6032





