spring 参数校验validator

spring 参数校验validator

加入jar包
在这里插入图片描述
springmvc.xml配置
我使用ReloadableResourceBundleMessageSource总是报错于是我选用ResourceBundleMessageSource一切正常

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 扫描组件 -->
    <context:component-scan base-package="com.xieli.liu.controller"/>
    <!--注解适配器和映射器-->
    <mvc:annotation-driven conversion-service="conversionService" validator="validator">
    </mvc:annotation-driven>
        <!-- 视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
    <!--自定义参数绑定-->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="com.xieli.liu.controller.converter.DateConverter"/>
        </list>
    </property>
    </bean>
    <!-- 校验器 -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- hibernate校验器 -->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如不指定,则默认classpath下的validationMessage.properties文件 -->
        <property name="validationMessageSource" ref="messageSource"></property>
    </bean>
    <!-- 校验错误信息配置文件 -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <!-- 资源文件名 -->
        <property name="basenames">
            <list>
                <!-- 配置错误信息文件 CustomValidationMessages.properties-->
                <value>config/springmvc/validationMessage</value>
            </list>
        </property>
        <!-- 解决中文乱码 -->
        <property name="defaultEncoding" value="utf-8"></property>
        <!-- 资源文件缓存时间 -->
        <property name="cacheSeconds" value="120"></property>
    </bean>
</beans>

配置pojo

package com.xieli.liu.pojo;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

public class UserInfo {
    @NotNull(message = "{UserInfo.userId.idNull.error}")
    private Integer userId;

    private Integer groupId;
    @Size(min = 1,max = 10,message="{UserInfo.name.length.error}")
    private String userName;

    private String nickName;

    private String userCode;

    private String userPwd;

    private String userType;

    private String userState;

    private String isDelete;

    private Integer createBy;

    private Date createTime;

    private Integer udateBy;

    private Date updateTime;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getGroupId() {
        return groupId;
    }

    public void setGroupId(Integer groupId) {
        this.groupId = groupId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName == null ? null : nickName.trim();
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode == null ? null : userCode.trim();
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd == null ? null : userPwd.trim();
    }

    public String getUserType() {
        return userType;
    }

    public void setUserType(String userType) {
        this.userType = userType == null ? null : userType.trim();
    }

    public String getUserState() {
        return userState;
    }

    public void setUserState(String userState) {
        this.userState = userState == null ? null : userState.trim();
    }

    public String getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(String isDelete) {
        this.isDelete = isDelete == null ? null : isDelete.trim();
    }

    public Integer getCreateBy() {
        return createBy;
    }

    public void setCreateBy(Integer createBy) {
        this.createBy = createBy;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Integer getUdateBy() {
        return udateBy;
    }

    public void setUdateBy(Integer udateBy) {
        this.udateBy = udateBy;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

配置错误信息文件validationMessage.properties

UserInfo.name.length.error=请输入1到10个字符
UserInfo.userId.idNull.error=ID不能为空

配置controller

 @RequestMapping("/saveUser")
    public String saveUser(HttpServletRequest request, @Validated UserInfo userInfo, BindingResult bindingResult) throws Exception {
        if(bindingResult.hasErrors()){
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            for (ObjectError objectError: allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }
        }
        return "rediret:queryuser.action";
    }

输入http://localhost:8080/ssm/saveUser.action?userName=mmmmmmmmmmmmmmmmmmmmmmmmmm
在这里插入图片描述

校验分组

编辑分组接口

package com.xieli.liu.validation;

/**
 * Created by Administrator on 2019-12-02.
 */
public interface UserInfoGroup1 {
}

package com.xieli.liu.validation;

/**
 * Created by Administrator on 2019-12-02.
 */
public interface UserInfoGroup2 {
}

为属性进行分组

package com.xieli.liu.pojo;

import com.xieli.liu.validation.UserInfoGroup1;
import com.xieli.liu.validation.UserInfoGroup2;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

public class UserInfo {
    @NotNull(message = "{UserInfo.userId.idNull.error}",groups = {UserInfoGroup2.class})
    private Integer userId;

    private Integer groupId;
    @Size(min = 1,max = 10,message="{UserInfo.name.length.error}",groups = {UserInfoGroup1.class})
    private String userName;

    private String nickName;

    private String userCode;

    private String userPwd;

    private String userType;

    private String userState;

    private String isDelete;

    private Integer createBy;

    private Date createTime;

    private Integer udateBy;

    private Date updateTime;

   get/set省略
}

controller层
1.测试UserInfoGroup1

    @RequestMapping("/saveUser")
    public String saveUser(HttpServletRequest request, @Validated(value = {UserInfoGroup1.class}) UserInfo userInfo, BindingResult bindingResult) throws Exception {
        if(bindingResult.hasErrors()){
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            for (ObjectError objectError: allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }
        }
        return "rediret:queryuser.action";
    }

访问http://localhost:8080/ssm/user/saveUser.action?userName=mmmmmmmmmmmmmmmmmm
在这里插入图片描述
只打印出第一个分组的校验信息
在这里插入图片描述
2.测试UserInfoGroup2

   @RequestMapping("/saveUser")
    public String saveUser(HttpServletRequest request, @Validated(value = {UserInfoGroup2.class}) UserInfo userInfo, BindingResult bindingResult) throws Exception {
        if(bindingResult.hasErrors()){
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            for (ObjectError objectError: allErrors) {
                System.out.println(objectError.getDefaultMessage());
            }
        }
        return "rediret:queryuser.action";
    }

访问http://localhost:8080/ssm/user/saveUser.action?userName=mmmmmmmmmmmmmmmmmm
在这里插入图片描述
只打印出第二个分组的校验信息
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桀骜浮沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值