谷粒商城学习——P69 JSR303分组校验
Posted 每天都要学一点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷粒商城学习——P69 JSR303分组校验相关的知识,希望对你有一定的参考价值。
p67中有个问题没有解决,就是在新增和修改的时候,校验规则可能并不一样,一套校验规则显然不适用。利用jsr303校验分组可解决
新建分组interface,必须是interface
AddGroup
package com.atguigu.common.valid; /** * @Description: 新增时分组的校验,jsr303用,不需要具体的内容 * @Author: zyn * @Date: 2021-6-30 */ public class AddGroup { }
UpdateGroup
package com.atguigu.common.valid; /** * @Description: 修改时分组的校验,jsr303用,不需要具体的内容 * @Author: zyn * @Date: 2021-6-30 */ public class UpdateGroup { }
实体类用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; }
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(); }
分组设置成类class后public class UpdateGroup {},返回信息不全
分组设置成interface后public interface UpdateGroup {},返回信息全
以上是关于谷粒商城学习——P69 JSR303分组校验的主要内容,如果未能解决你的问题,请参考以下文章
第185天学习打卡(项目 谷粒商城27 JSR303自定义校验注解 SPU SKU 属性分组效果前端组件抽取 父子组件交互)