zoukankan      html  css  js  c++  java
  • springboot-web进阶(一)——表单验证

    一、概述

      1.准备

      先把快速入门篇的结构调整一下,按照自己的喜好或者要求调整:

      

      2.需求

        基于快速入门篇增加一个女生的需求,禁止添加未成年(18岁以下)

      3.实现

        第一步:在bean的属性上加对应约束注解

      @Size(min = 3, max = 8, message = "名称长度不合法!")
        private String name;
        @Min(value = 18, message = "未成年禁止入内!")
        private Integer age;
    package com.example.demo.bean;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.validation.constraints.Min;
    import javax.validation.constraints.Size;
    
    /**
     * girl的bean
     *
     * @author zcc ON 2018/2/9
     **/
    @Entity
    public class Girl {
        @Id
        @GeneratedValue
        private Integer id;
        @Size(min = 3, max = 8, message = "名称长度不合法!")
        private String name;
        @Min(value = 18, message = "未成年禁止入内!")
        private Integer age;
    
        public Girl() {
        }
    
        public Girl(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    Girl

        第二步:在需要校验的参数前加@Valid注解

    @PostMapping(value = "/girls")
        public Girl addGirl(@Valid Girl girl) {
            // 直接返回这个实体类也可以
            return girlRepository.save(girl);
        }

        第三步:根据错误信息错误参数校验逻辑

     @PostMapping(value = "/girls")
        public Girl addGirl(@Valid Girl girl, BindingResult bindingResult) {
            // 表单验证逻辑
            if (bindingResult.hasErrors()) {
                List<FieldError> fieldErrors = bindingResult.getFieldErrors();
                for (FieldError fieldError : fieldErrors) {
                    log.error("错误字段为:{},错误信息为:{}", fieldError.getField(), fieldError.getDefaultMessage());
                }
                // 发生错误,直接return
                return null;
            }
            // 直接返回这个实体类也可以
            return girlRepository.save(girl);
        }

        测试:

        

      常用约束:

    @Null 限制只能为null
    @NotNull 限制必须不为null
    @AssertFalse 限制必须为false
    @AssertTrue 限制必须为true
    @DecimalMax(value) 限制必须为一个不大于指定值的数字
    @DecimalMin(value) 限制必须为一个不小于指定值的数字
    @Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
    @Future 限制必须是一个将来的日期
    @Max(value) 限制必须为一个不大于指定值的数字
    @Min(value) 限制必须为一个不小于指定值的数字
    @Past 限制必须是一个过去的日期
    @Pattern(value) 限制必须符合指定的正则表达式
    @Size(max,min) 限制字符长度必须在min到max之间
    @Past 验证注解的元素值(日期类型)比当前时间早
    @NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
    @NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
    @Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

        完整约束,请参考hibernate官方文档Bean Validation constraints

          https://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/#section-builtin-constraints

  • 相关阅读:
    盒子垂直水平居中
    Sahi (2) —— https/SSL配置(102 Tutorial)
    Sahi (1) —— 快速入门(101 Tutorial)
    组织分析(1)——介绍
    Java Servlet (1) —— Filter过滤请求与响应
    CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)
    JBoss Wildfly (1) —— 7.2.0.Final编译
    CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)
    CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
    CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8435427.html
Copyright © 2011-2022 走看看