1、异常描述
springmvc 中,支持服务器端的参数校验,例如可以控制参数不能为空,长度,或者可以控制时间类型的参数不能选择一个过去的时间等...
其中,hibernate针对JSR 303 进行了实现。
但是,使用的时候出现异常:
HV000030: No validator could be found for type: java.lang.Integer.
2、错误原因分析
出错的原因:
是因为我在Integer类型的属性上添加@NotNull注解。
@NotNull可以用来验证String类型的参数
@Past可以用来验证Date类型的日期
@Length可以验证长度等...
3、解决方法
正确的做法:
public class User {
private Integer id;
@NotEmpty(message="用户名不能为空")
private String username;
@NotNull(message="密码不能为空")
@Length(min=6,max=10,message="密码长度在6~10之间" )
private String userPassword;
@DateTimeFormat(pattern="yyyy-MM-dd")
@Past(message="必须是一个过去的时间")
private Date birthday;
// ...
}
建议在使用这些注解的时候,还是看它验证的数据类型是哪种,这样可以避免出错
此文希望可以帮助到大家。如有错误,请指教。
如果大家还有其他的情况或者好的解决方法,也望指教,感谢阅读。