SpringMVC数据校验及错误信息回显

Spring 数据校验及错误信息回显

概述:

主要对SpringMVC使用hibernate-validation框架(和hibernate没有任何关系)进行数据校验的一些解释和自己在学习过程中遇到的一些坑。。。使用这个校验框架的话,需要导入jar包(下载地址),如下:
在这里插入图片描述

校验思路

1.前端页面提交请求以及请求参数
2.服务器端接收到请求,通过DispatcherServlet控制器转发到Controller中交给相应的处理器进行处理。
3.在调用处理器进行处理之前使用validation进行数据校验。
4.如果校验出错,将错误信息回显到前端页面

校验步骤

1.配置校验器

<!-- 校验器,配置validator -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        <property name="validationMessageSource" ref="validationMessageSource"></property>
</bean>

<bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 指定校验信息的资源文件的基本文件名称,不包括后缀,后缀默认是properties -->
        <property name="basenames">
            <list>
                <value>classpath:messageResource</value>
            </list>
        </property>
        <!-- 指定文件的编码 -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="fileEncodings" >
            <props>
                <prop key="classpath:ValErrMsg">UTF-8</prop>
            </props>
        </property>
        <!-- 对资源文件内容缓存的时间,单位秒 -->
        <property name="cacheSeconds" value="120"></property>
    </bean>

注意:
注意这里一定要指明是在 classpath 路径下,否则无效
在 properties 文件中定义错误信息:
格式为 : @Valid注解的属性的类首字母小写.类中添加了验证的属性.自定义的错误类型描述=错误信息
例如用 @Valid注解了 Employee employee ,并且在Employee类中为 lastName 和 email
分别添加了 @NotEmpty 和 @Email 注解。

那么 properties 文件中的 格式为:

    employee.lastName.isNull=lastName不能为空值。
    employee.email.error=电子邮件地址不合法。

然后要使用自定义的错误信息,还需要在 @NotEmpty 注解后面加上 message 属性
例如:@NotEmpty(message = “{employee.lastName.isNull}”)

employee.lastName.isNull=lastName不能为空值。
employee.gender.isNull=请输入您的性别。
employee.email.error=电子邮件地址不合法。

2.将校验器加载到处理器适配器中

 <mvc:annotation-driven validator="validator"/>

3.在POJO中添加校验规则

	/*
    * 对要进行验证的属性添加对应的注解
    * */
    @NotEmpty(message = "{employee.lastName.isNull}")
    private String lastName;

    @Email(message = "{employee.email.error}")
    private String email;

    @NotEmpty(message = "{employee.gender.isNull}")

敲重点!!!
要想使用 <form:errors/> 标签在界面上对错误信息进行回显
一定要为要校验的参数添加 @ModelAttribute 注解并且指定value值与 form 表单中的
ModelAttribute 值一致
否则错误信息无法显示到界面上
@ModelAttribute(“employee”)可以进行数据回显,也就是数据提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。

@ModelAttribute(value = "employee") @Valid Employee employee

<form:form action="emp" method="post" modelAttribute="employee">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值