Spring Boot 表单自定义验证

在Spring Boot中,如果我们需要访问后台数据进行验证,可以自定义验证,下面是一个自定义登录验证,当uid在数据库中存在时,验证失败

前提条件:表单功能已经写好

  1. 新建自定义验证的类RegisterValidators
package com.oneonone.validators;

import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import com.oneonone.entities.Customer;
import com.oneonone.forms.CustomerForm;
import com.oneonone.services.CustomerServices;

@Component
public class RegisterValidators implements Validator {

	private CustomerServices customerServices;
	
	public RegisterValidators(CustomerServices customerServices) {
		this.customerServices = customerServices;
	}
	
	@Override
	public boolean supports(Class<?> clazz) {
		// TODO Auto-generated method stub
		return CustomerForm.class.equals(clazz);
	}

	@Override
	public void validate(Object target, Errors errors) {
		// TODO Auto-generated method stub
		CustomerForm userForm = (CustomerForm)target;
		String uid = userForm.getUid();
		String pwd = userForm.getPwd();
		
		//uid为空
		if(uid==null || uid.isEmpty()) {//uid 为空
			errors.rejectValue("uid", "uid.required");
		}else {
			Customer customer = customerServices.findCustomerByID(uid);
			if(customer != null) {
				errors.rejectValue("uid", "uid.reduplicated");
			}
		}
		
		//password为空
		if(!StringUtils.hasText(pwd)) {
			errors.rejectValue("pwd", "password.required");
		}
		
	}

}

  1. 将自定义验证类与controller进行绑定
    controller中加入下面方法:
@InitBinder
    public void bindValidator(DataBinder dataBinder) {
        dataBinder.setValidator(new RegisterValidators(customerServices));
    }
  1. 修改表单功能的controller方法,例如注册:
    Spring Boot 表单自定义验证_第1张图片4. 在页面中加入验证内容,我这里是jsp页面,所以加入如下错误提示代码:
<form:errors path="uid"/>
<form:errors path="pwd"/>

CustomerForm中的两个字段名称必须与path中的内容一致。

推荐视频

玩转Spring Data JPA&Spring Data JDBC

深入浅出SpringCloud

SpringBoot快速入门

Spring MVC快速开发

轻松搞定Spring全家桶(初识篇)

玩转Spring全家桶

推荐文章

系统上线后雪崩!让我们来学习 Spring Cloud Hystrix 及监控来解决雪崩问题

10 分钟教会你 Spring Boot 集成 Thymeleaf、MyBatis 完成产品的增删改查

【高阶用法】一个实例学会 Spring Cloud 的注册中心 Eureka的使用

Spring Cloud gateway与注册中心Eureka的完美集成

你可能感兴趣的:(Spring,Boot,Spring,技术杂说)