spring MVC 校验框架

 

目录

 校验简介

JSR规范列表

入门案例

1.pom文件

2.前端文件

3.实体类文件

4.控制器

嵌套校验

1.jsp 文件

 2.实体类

3.控制器文件

4.结果

分组校验


 校验简介

JSR规范列表

入门案例

1.pom文件

    <!--导入校验的jsr303规范-->
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.1.Final</version>
    </dependency>
    <!--导入校验框架实现技术-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.1.0.Final</version>
    </dependency>

2.前端文件

<html>
<head>
    <title>添加员工-用于演示表单验证</title>
</head>
<body>
    <form action="/addemployee" method="post">
        <%--页面使用${}获取后台传递的校验信息--%>
        员工姓名:<input type="text" name="name"><span style="color:red">${name}</span><br/>
        员工年龄:<input type="text" name="age"><span style="color:red">${age}</span><br/>
        <%--注意,引用类型的校验未通过信息不是通过对象进行封装的,直接使用对象名.属性名的格式作为整体属性字符串进行保存的,和使用者的属性传递方式有关,不具有通用性,仅适用于本案例--%>
        <%--省:<input type="text" name="address.provinceName"><span style="color:red"></span><br/>--%>
        <input type="submit" value="提交">
    </form>
</body>
</html>

3.实体类文件

public class Employee {
   
    @NotNull(message = "姓名不能为空")
    private String name;//员工姓名
    
    @NotNull(message = "年龄不能为空")
    private Integer age;//员工年龄

    getxxx()
    setxxx()

}

4.控制器

    @RequestMapping(value = "/addemployee")
    public String addEmployee(@Validated Employee employee, Errors errors, Model m){
        if(errors.hasErrors()){
            List<FieldError> fieldErrors = errors.getFieldErrors();
            System.out.println(fieldErrors.size());
            for(FieldError error : fieldErrors){
                System.out.println(error.getField());
                System.out.println(error.getDefaultMessage());
                m.addAttribute(error.getField(),error.getDefaultMessage());
            }
            return "addemployee.jsp";
        }
        return "success.jsp";
    }

嵌套校验

1.jsp 文件

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>
<html>
<head>
    <title>添加员工-用于演示表单验证</title>
</head>
<body>
<form action="/addemployee" method="post">
    <%--页面使用${}获取后台传递的校验信息--%>
    员工姓名:<input type="text" name="name"><span style="color:red">${name}</span><br/>
    员工年龄:<input type="text" name="age"><span style="color:red">${age}</span><br/>
    <%--注意,引用类型的校验未通过信息不是通过对象进行封装的,直接使用对象名.属性名的格式作为整体属性字符串进行保存的,和使用者的属性传递方式有关,不具有通用性,仅适用于本案例--%>
    省:<input type="text" name="address.provinceName"><span style="color:red">${address.provinceName}</span><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

 2.实体类

 

public class Employee {
    @NotNull(message = "年龄不能为空")
    @Min(value = 18,message = "年龄不能小于18岁")
    @Max(value = 60,message = "年龄不能大于60岁")
    private Integer age;//员工年龄

    @NotBlank(message = "姓名不能为空")
    private String name;//员工姓名

    @Valid
    private Address address;

getxxx(),setxxx()方法

}
public class Address {
    @NotBlank(message = "请输入省份名称")
    private String provinceName;//省份名称

    @NotBlank(message = "请输入城市名称")
    private String cityName;//城市名称

    @NotBlank(message = "请输入详细地址")
    private String detail;//详细住址

    @NotBlank(message = "请输入邮政编码")
    @Size(max = 6,min = 6,message = "邮政编码由6位组成")
    private String zipCode;//邮政编码
    
    getxxx(),setxxx();

}

3.控制器文件

    @RequestMapping(value = "/addemployee")
    public String addEmployee(@Validated Employee employee, Errors errors, ModelAndView m){
        if(errors.hasErrors()){
            List<FieldError> fieldErrors = errors.getFieldErrors();
            System.out.println(fieldErrors.size());
            for(FieldError error : fieldErrors){
                System.out.println(error.getField());
                System.out.println(error.getDefaultMessage());
                m.addObject(error.getField(),error.getDefaultMessage());
            }
            return "addemployee.jsp";
        }
        return "success.jsp";
    }

4.结果

6
address.provinceName
请输入省份名称
address.detail
请输入详细地址
address.cityName
请输入城市名称
name
姓名不能为空
address.zipCode
请输入邮政编码
age
年龄不能为空

分组校验

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值