<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot~自定義valid及DefaultGroupSequenceProvider的作用

      spring一切都可以基于注解來實例,像緩存,校驗,字段映射,動態代理等等,今天主要說一下自定義的校驗及校驗的組關聯。

      • 自定義注解,判斷name需要以"管理員"結尾
      @Target(ElementType.FIELD)
      @Retention(RetentionPolicy.RUNTIME)
      @Constraint(validatedBy = PrefixAdminValidator.class)
      @Documented
      public @interface PrefixAdmin {
          String message() default "必須以'角色'結尾";
          //這兩個屬性必須有
          Class<?>[] groups() default {};
          Class<? extends Payload>[] payload() default {};
      }
      @Component
      public class PrefixAdminValidator implements ConstraintValidator<PrefixAdmin, String> {
      
          @Override
          public void initialize(PrefixAdmin constraintAnnotation) {
          }
      
          @Override
          public boolean isValid(String value, ConstraintValidatorContext context) {
              return value.endsWith("角色");
          }
      }
      
      • 然后有個需求,只有字段manager為true時,才進行PrefixAdminValidator的校驗,這時我們可以通過DefaultGroupSequenceProvider組依賴來實現
      /**
       * 校驗的依賴,當isManager為true為,PrefixAdmin注解才有效.
       */
      public class RoleProvider implements DefaultGroupSequenceProvider<RoleDTO> {
          @Override
          public List<Class<?>> getValidationGroups(RoleDTO object) {
              List<Class<?>> defaultGroupSequence = new ArrayList<>();
      
              defaultGroupSequence.add(RoleDTO.class); //注意這里不要寫錯
              if (object != null && object.isManager()) {
                  defaultGroupSequence.add(RoleDTO.CheckManagerGroup.class);
              }
              return defaultGroupSequence;
          }
      }
      
      • 實體在字段上添加對接的注解
      @Data
      @GroupSequenceProvider(RoleProvider.class)
      @ApiModel("角色DTO")
      public class RoleDTO {
          private String id;
      
          @PrefixAdmin(groups = CheckManagerGroup.class)
          private String name;
      
          private boolean manager;
      
          public interface CheckManagerGroup {
          }
      }
      
      • 控制器請求體添加@Valid
          @ApiOperation("新增")
      	@PostMapping("add")
      	@Transactional(rollbackFor = Exception.class)
      	public CommonResult add(@Valid @RequestBody RoleDTO roleDTO) {
      		if (roleDao.selectOne(new QueryWrapper<Role>().lambda().eq(Role::getName, roleDTO.getName())) != null) {
      			return CommonResult.clientFailure(String.format("%s已經存在", roleDTO.getName()));
      		}
      		Role role = new Role();
      		CopyUtils.copyProperties(roleDTO, role);
      		roleDao.insert(role);
      		updateRolePermissions(roleDTO.getPermissionIdList(), role);
      		return CommonResult.ok();
      	}
      
      • 測試數據
      • 結果響應
      {
          "code": 400,
          "message": "name必須以'角色'結尾",
          "data": null
      }
      
      posted @ 2022-04-27 13:51  張占嶺  閱讀(830)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产午夜精品福利在线观看| 欧美肥老太wbwbwbb | 亚洲欧美日韩尤物AⅤ一区| 免费看黄色片| av中文字幕国产精品| 亚洲天堂一区二区成人在线| 四虎国产精品成人免费久久 | 亚洲成人资源在线观看| 精品国产迷系列在线观看| 南江县| 国产乱妇无乱码大黄aa片| 中文字幕亚洲精品人妻| 99re热这里只有精品视频| 四虎永久在线精品免费看| 国产精品一区中文字幕| 久久精品国产亚洲av麻豆小说| 国产日韩在线亚洲色视频| 成年女人黄小视频| 亚洲国产在一区二区三区| 漂亮人妻被强中文字幕久久| 永久免费无码成人网站| 全州县| 亚洲一久久久久久久久| 久久精品国产亚洲夜色AV网站| 久久精品道一区二区三区| 久久综合亚洲色一区二区三区| 国产日韩精品视频无码| 国产午夜福利短视频| 亚洲天堂男人天堂女人天堂| 国产睡熟迷奷系列网站| 亚洲a∨国产av综合av| 国产日韩AV免费无码一区二区三区 | 色综合天天综合天天更新| 日本熟妇浓毛| 国产成人av一区二区三区不卡| 又黄又爽又色视频免费| 国产综合av一区二区三区| 国内精品久久人妻无码不卡| 日韩精品亚洲专在线电影| 男人猛戳女人30分钟视频大全| 97精品国产91久久久久久久|