异常信息如下:
No validator could be found for constraint 'org.hibernate.validator.constraints.Length' validating type 'java.lang.Integer'. Check configuration for 'xxxxxx'
错误原因字面翻译是:约束'org.hibernate.validator.constraints.Length'验证类型'java.lang.Integer'找不到验证器。 检查“ XXXXXX”的配置。也就是 在类中使用的校验注解所支持的数据类型与实体中字段的类型不符合。
例如:
private Integer status;
private String strdemo;
@NotEmpty(message="状态:不能为空")
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Length(message="长度必须介于 0 和 255 之间")
public String getStrdemo() {
return strdemo;
}
public void setStrdemo(String strdemo) {
this.strdemo= strdemo;
}
上面代码中在Integer status 的字段上使用@NotEmpty,@NotEmpty支持的是字符串类型字段,这样子使用肯定是会报错的。
解决方法:换个校验注解- 将Integer类型的字段上使用的@NotEmpty换成@NotNull,或者不使用校验注解
private Integer status;
private String strdemo;
@NotNull(message="状态:不能为空")
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Length(message="长度必须介于 0 和 255 之间")
public String getStrdemo() {
return strdemo;
}
public void setStrdemo(String strdemo) {
this.strdemo= strdemo;
}
或
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}