idea+maven+SpringMVC注解开发validation校验

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>
注意资源文件编码格式不是fileEncodings而是defaultEncoding

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/82812968