当前位置: 首页 > news >正文

西宁网站建设维护风烛源网站管理系统

西宁网站建设维护,风烛源网站管理系统,网站检测器,做网站手把手目录 一、导入依赖 二、实现步骤 三、分组校验 四、自定义校验 一、导入依赖 <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency> 二…

目录

一、导入依赖

二、实现步骤

三、分组校验

四、自定义校验


一、导入依赖

        <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency>

二、实现步骤

1、给实体类对应的属性添加注解:javax.validation.constraints,并定义自己的message提示,如下所示:

/*** 品牌名*/
@NotBlank(message = "品牌名不能为空")
private String name;

2、开启校验功能@Valid,校验错误以后会有默认的响应,但是以上面的message优先

  /*** 保存*/@RequestMapping("/save")//@RequiresPermissions("product:brand:save")public R save(@Valid @RequestBody BrandEntity brand){brandService.save(brand);
​return R.ok();}

3、给校验的Bean后紧跟一个BindingResult,就可以获取到校验的结果

  /*** 保存*/@RequestMapping("/save")//@RequiresPermissions("product:brand:save")public R save(@Valid @RequestBody BrandEntity brand, BindingResult Result){brandService.save(brand);
​return R.ok();}

三、分组校验

1、分组校验(多场景的复杂校验),当新增和更新校验的字段个数不一样时,可以采用分组,首先给属性上注解后面添加分组,标注什么情况需要进行校验

先添加两个接口,不需要实现什么

public interface AddGroup {
}
public interface UpdateGroup {
}

属性上标注类型

/*** 品牌id*/
@NotNull(message = "修改必须指定品牌id", groups = UpdateGroup.class)
@Null(message = "新增不能指定id", groups = AddGroup.class)
@TableId
private Long brandId;

然后是方法上改为validated注解,可以添加分组类型

    /*** 保存*/@RequestMapping("/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();}

注意,默认没有指定分组的分组注解是不生效的,比如@Validated(AddGroup.class)只有标注了AddGroup分组的才会校验,没有指定分组的只会在@Validated,也就是没指定分组才会校验

四、自定义校验

1、编写一个自定义校验注解

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { ListValueConstraintValidator.class}) //这里可以放置多个校验器,我们只写了对integer的校验,还可以写别的类型,springboot会自动匹配对应的校验器
public @interface ListValue {String message() default "{com.atguigu.common.valid.ListValue.message}";
​Class<?>[] groups() default {};
​Class<? extends Payload>[] payload() default {};
​int[] vals() default {};
}
​
​

2、编写一个自定义校验器

public class ListValueConstraintValidator implements ConstraintValidator<ListValue, Integer> {private Set<Integer> set = new HashSet<>();
​// 初始化方法@Overridepublic void initialize(ListValue constraintAnnotation) {int[] vals = constraintAnnotation.vals();for(int val: vals) {set.add(val);}}
​/** @Description* @Author zoe* @Date 2023/7/13 16:52* @Param integer就是要进行校验的值**/@Overridepublic boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {return set.contains(integer);}
}

3、关联自定义校验注解和自定义校验器

@Constraint(validatedBy = { ListValueConstraintValidator.class}) //这里可以放置多个校验器,我们只写了对integer的校验,还可以写别的类型,springboot会自动匹配对应的校验器
public @interface ListValue

4、属性上面标注该注解

/*** 显示状态[0-不显示;1-显示]*/@ListValue(vals = {0, 1}, groups = AddGroup.class)private Integer showStatus;

http://www.yayakq.cn/news/315914/

相关文章:

  • 网站续费合同wordpress 增加作者
  • 电子商务网站建设的成本分析营销软文推广平台
  • 专业型网站和个人网站wordpress可视化编辑在那里
  • 做汽配外贸是在哪个网站做计算机网络设计主要学什么
  • 南充市建设厅官方网站在网站建设流程中编程属于()阶段
  • 网站建设方案的需求分析电商平台回应矿泉水箱内有老鼠
  • 手机网站怎么备案wordpress首页不显示图片
  • 南昌建设公司网站宁波手工活外发加工网
  • 企业建站系统下载广安 网站建设
  • 百讯科技网站建设河源盛世网站建设
  • 重庆建设厂招工信息网站wordpress 恢复 附件
  • 农业局网站建设方案电商怎么做才能赚钱
  • 汕头企业建站外籍人士在中国注册公司
  • 做海外贸易的网站名叫什么wordpress最新去底部版权
  • 十大免费跨境软件优化大师怎么提交作业
  • 淘宝网站的内容建设wordpress 获取文章评论
  • .net 网站开发视频教程中国公司排名500强
  • 服务类型网站开发需要哪些技术做网站推广的销售怎么打电话
  • 网站改版上线无锡网站建设公司
  • 东莞网站建设专业品牌可以用wordpress的云
  • 网站推广策划方案书手机网站建设如何
  • 婚纱摄影网页模板广州 网站优化
  • 用ps切片做网站能不能完成营销团队建设
  • 旅游网站建设论文wordpress头部信息
  • 汇鑫科技网站建设dw网页设计实验报告
  • 如何建设手机版网站网页无法访问怎么解决
  • 沈阳自助模板建站施工企业安全生产考核评定应分为
  • 深圳市龙岗区住房和建设局官网网站金蝶云企业云平台
  • 洛阳做网站的番禺网站建设平台
  • 宁波江北区网站推广联系方式安庆信德建设咨询有限公司网站