zoukankan      html  css  js  c++  java
  • 谷粒商城学习——P68 JSR303分组校验

    p67中有个问题没有解决,就是在新增和修改的时候,校验规则可能并不一样,一套校验规则显然不适用。利用jsr303校验分组可解决

    新建分组interface,必须是interface

    AddGroup

    package com.atguigu.common.valid;
    
    /**
     * @Description: 新增时分组的校验,jsr303用,不需要具体的内容
     * @Author: zyn
     * @Date: 2021-6-30
     */
    public class AddGroup {
    }
    View Code

    UpdateGroup

    package com.atguigu.common.valid;
    
    /**
     * @Description: 修改时分组的校验,jsr303用,不需要具体的内容
     * @Author: zyn
     * @Date: 2021-6-30
     */
    public class UpdateGroup {
    }
    View Code

    实体类用groups指定分组

    package com.atguigu.gulimall.product.entity;
    
    import com.atguigu.common.valid.AddGroup;
    import com.atguigu.common.valid.UpdateGroup;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    
    import java.io.Serializable;
    import lombok.Data;
    import org.hibernate.validator.constraints.URL;
    
    import javax.validation.constraints.*;
    
    /**
     * 品牌
     * 
     * @author zyn
     */
    @Data
    @TableName("pms_brand")
    public class BrandEntity implements Serializable {
        private static final long serialVersionUID = 1L;
    
        /**
         * 品牌id
         */
        @NotNull(message = "修改必须指定品牌id",groups = {UpdateGroup.class})
        @Null(message = "新增不能指定品牌id",groups = {AddGroup.class})
        @TableId
        private Long brandId;
        /**
         * 品牌名
         */
        @NotBlank(message = "品牌名不能为空",groups = {AddGroup.class,UpdateGroup.class})
        private String name;
        /**
         * 品牌logo地址
         */
        @NotEmpty
        @URL(message = "url必须是合法的url地址")
        private String logo;
        /**
         * 介绍
         */
        private String descript;
        /**
         * 显示状态[0-不显示;1-显示]
         */
        private Integer showStatus;
        /**
         * 检索首字母
         */
        @NotEmpty
        @Pattern(regexp = "^[a-zA-Z]",message = "检索首字母必须是一个字母")
        private String firstLetter;
        /**
         * 排序
         */
        @NotNull
        @Min(value =0,message = "排序必须大于等于0")
        private Integer sort;
    
    }
    View Code

    controller用@Validated注解取代@Valid注解,并设置上分组

        @RequestMapping("/save")
       // @RequiresPermissions("product:brand:save")
        public R save(@Validated(AddGroup.class) @RequestBody BrandEntity brand){
    
            brandService.save(brand);
    
            return R.ok();
        }
    
        /**
         * 修改
         */
        @RequestMapping("/update")
       // @RequiresPermissions("product:brand:update")
        public R update(@Validated(UpdateGroup.class) @RequestBody BrandEntity brand){
            brandService.updateById(brand);
    
            return R.ok();
        }
    View Code

    分组设置成类class后public class UpdateGroup {},返回信息不全 

    分组设置成interface后public interface UpdateGroup {},返回信息全

     

  • 相关阅读:
    快逸报表调用存储过程(SqlServer)
    一个睡五分钟等于六个钟头的方法 (转)
    Windows Live Writer For Windows Server 2003
    设计模式装饰者模式
    SqlServerCUBE
    Android 70道面试题汇总不再愁面试
    说服力:让你的PPT会说话
    亮剑Java项目开发案例导航
    初入社会必知的88个潜规则
    android UI进阶之仿iphone的tab效果2
  • 原文地址:https://www.cnblogs.com/yanan7890/p/14956806.html
Copyright © 2011-2022 走看看