java之Validator接口SpringMVC数据校验 java开发之基于Validator接口的SpringMVC数据校验方式
DrLai 人气:0想了解java开发之基于Validator接口的SpringMVC数据校验方式的相关内容吗,DrLai在本文为您仔细讲解java之Validator接口SpringMVC数据校验的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:SpringMVC数据校验,Validator接口数据校验,下面大家一起来学习吧。
Spring MVC 提供了两种数据校验的方式:
1、基于 Validator 接口。
2、使用 Annotation JSR - 303 标准进行校验。
基于 Validator 接口的⽅式需要自定义 Validator 验证器,每⼀条数据的验证规则需要开发者⼿动完成, 使⽤ Annotation JSR - 303 标准则不需要⾃定义验证器,通过注解的方式可以直接在实体类中添加每个属性的验证规则,这种方式更加方便,实际开发中推荐使用。
1.定义实体类Account
package entity; import lombok.Data; @Data public class Account { private String name; private String password; }
2.自定义验证器 AccountValidator,实现 Validator 接口
package validator; import entity.Account; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class AccountValidator implements Validator { @Override public boolean supports(Class<?> aClass) { return Account.class.equals(aClass); } @Override public void validate(Object o, Errors errors) { ValidationUtils.rejectIfEmpty(errors,"name",null,"姓名不能为空"); ValidationUtils.rejectIfEmpty(errors,"password",null,"密码不能为空"); } }
Validator中有两个方法, supports是判断传入是否为目标类,如果是的话则进行下一步,数据验证的操作。
3.控制器
package Mycontroller; import entity.Account; import entity.Person; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.validation.Valid; @Controller @RequestMapping("/validator") public class ValidatorHandler { @GetMapping("/login") public String login(Model model){ model.addAttribute("account",new Account()); return "login"; } @PostMapping("/login") public String login(@Validated Account account, BindingResult bindingResult){ if(bindingResult.hasErrors()){ return "login"; } return "index"; }
4. springmvc.xml 配置验证器
<bean id="accountValidator" class="com.southwind.validator.AccountValidator"> </bean> <mvc:annotation-driven validator="accountValidator"></mvc:annotation-driven>
5.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <head> <title>Title</title> </head> <body> <form:form modelAttribute="account" action="/validator/login" method="post"> 姓名:<form:input path="name"></form:input><form:errors path="name"></form:errors><br> 密码:<form:input path="password"></form:input><form:errors path="password"></form:errors><br> <input type="submit" value="登录"> </form:form> </body> </html>
加载全部内容