版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82812968
前言:
在一个运行的web系统中,一定少不了校验的环节,所以自然而然衍生出了很多校验框架,这里我就来简单介绍一种Bean validation 的校验框架,是基于Hibernate的。
我的demo栗子已经放到git上了:网上的都是讲解,不如一个实实在在的栗子来的直接
https://github.com/jjc123/Validation_Demo
参考:
https://www.jianshu.com/p/452cb1a9eefc
注意这篇博客我只介绍我遇到的几个坑:
主要有三大坑:
第一坑:
validation校验框架需要的jar包:
hibernate-validator.jar
jboss-logging.jar
validation-api.jar
这里我是用maven的,所以更简单:
<!-- hibernate 校验 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
这里为什么坑呢?
因为系统报错,
我其实参考了网上很多的maven配置,,还有其他的 我也都试过了
方向错了,以为是maven缺少依赖包导致系统出错,后来找了个方法,查看到了hibernate-validator的依赖包已经包含了jboss-logging.jar和validation-api.jar这两个jar包,所以不需要额外导入了。
idea如何查看maven的依赖树:
https://blog.csdn.net/qq_38409944/article/details/82812272
第二坑:
引用外部资源文件:
两者有啥区别看到没?
没错前面那张图显示红色,我就以为是错误的,后面那张图,我打入val的时候就跳出整个名称我就以为是对的。
结果却是当我想显示错误信息的时候,它显示的是这样的:
{name.length.error}
而不是name.length.error=名字范围是1到3的范围内
后面的错误信息。
就这个错误,我真的是找了半天,要死了要死了。红色是真的很容易误导人。
注意:
在idea下开发有可能会报classpath:CustomValidationMessage
不存在但是不影响开发,去掉classpath反而测试失败.
第三坑:
编码格式问题,出现乱码:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 资源文件名-->
<property name="basename" value="ValidationMessages">
</property>
<!-- 资源文件编码格式 -->
<property name="defaultEncoding" >
<props>
<prop key="classpath:ValErrMsg">UTF-8</prop>
</props>
</property>
<!-- 对资源文件内容缓存时间,单位秒 -->
<property name="cacheSeconds" value="120"/>
</bean>