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

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

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

      springboot~ConstraintValidatorContext驗證兩個字段內(nèi)容相同

      場景

      我在開發(fā)修改密碼功能,通過原密碼和新密碼及確認(rèn)新密碼,希望通過ConstraintValidator這個方式來校驗新密碼和確認(rèn)新密碼,規(guī)則是這兩個密碼需要是相同的。

      參考文檔

      實現(xiàn)

      定義Matches注解

      @Constraint(validatedBy = SameContentMatchesValidator.class)
      @Target({ ElementType.FIELD })
      @Retention(RetentionPolicy.RUNTIME)
      public @interface SameContentMatches {
      
      	String message() default "內(nèi)容不一致";
      
      	Class<?>[] groups() default {};
      
      	Class<? extends Payload>[] payload() default {};
      
      	String field(); // 新增屬性,指定要比較的字段
      
      }
      

      定義DTO對象

      @Data
      public class UserModifyPasswordDTO implements UserDTO {
      
      	@NotNull
      	private String userName;
      
      	@NotNull
      	private String password;
      
      	private String newPassword;
      
      	@SameContentMatches(field = "newPassword")
      	private String confirmPassword;
      
      }
      

      定義MatchesValidator對象,實現(xiàn)驗證的代碼邏輯

      public class SameContentMatchesValidator implements ConstraintValidator<SameContentMatches, String> {
      
          private String field;
      
          @Override
          public void initialize(SameContentMatches constraintAnnotation) {
              this.field = constraintAnnotation.field();
          }
      
          @Override
          public boolean isValid(String object, final ConstraintValidatorContext context) {
              return true;
          }
      }
      

      遇到的問題

      • 在MatchesValidator類中,無法獲取到當(dāng)前對象,除非把SameContentMatches注解作用到當(dāng)前類上面,而非字段上面。
      • 這個問題應(yīng)該主是無法解決的,因為你攔截的是字段,在這個ConstraintValidatorContext處理的都是和當(dāng)前字段有關(guān)的信息

      應(yīng)用到類上,代碼調(diào)整,問題解決

      @Constraint(validatedBy = SameContentMatchesValidator.class)
      @Target({ ElementType.TYPE })
      @Retention(RetentionPolicy.RUNTIME)
      public @interface SameContentMatches {
      
      	String message() default "內(nèi)容不一致";
      
      	Class<?>[] groups() default {};
      
      	Class<? extends Payload>[] payload() default {};
      
      	/**
      	 * 源字段名
      	 * @return
      	 */
      	String sourceField();
      
      	/**
      	 * 目標(biāo)字段名
      	 * @return
      	 */
      	String destinationField();
      
      }
      
      public class SameContentMatchesValidator implements ConstraintValidator<SameContentMatches, Object> {
      
      	private String sourceField;
      
      	private String destinationField;
      
      	@Override
      	public void initialize(SameContentMatches constraintAnnotation) {
      		this.sourceField = constraintAnnotation.sourceField();
      		this.destinationField = constraintAnnotation.destinationField();
      	}
      
      	@Override
      	public boolean isValid(Object o, final ConstraintValidatorContext context) {
      		final Object sourceFieldVal = BeanUtil.getProperty(o, this.sourceField);
      		final Object destinationFieldVal = BeanUtil.getProperty(o, this.destinationField);
      		return sourceFieldVal.equals(destinationFieldVal);
      	}
      
      }
      
      @Data
      @SameContentMatches(sourceField = "confirmPassword", destinationField = "newPassword")
      public class UserModifyPasswordDTO implements UserDTO {
      
      	@NotNull
      	private String userName;
      
      	@NotNull
      	private String password;
      
      	private String newPassword;
      
      	private String confirmPassword;
      
      }
      

      上面的代碼SameContentMatches注解出現(xiàn)了弱編碼,這塊需要再進(jìn)行優(yōu)化。

      posted @ 2024-10-14 14:43  張占嶺  閱讀(422)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 明溪县| 啪啪av一区二区三区| 国产69精品久久久久99尤物| 高潮精品熟妇一区二区三区| 麻豆一区二区中文字幕| 九九热爱视频精品| 国产又黄又爽又不遮挡视频| 色老头在线一区二区三区| 国产精一品亚洲二区在线播放 | 莱州市| 欧美搡bbbbb搡bbbbb| 国产中文字幕在线一区| 久久综合色之久久综合| 亚洲国产一区二区三区| 成人综合人人爽一区二区| 最新国产精品拍自在线播放| 精品久久人人做爽综合| 无套内谢少妇一二三四| 日韩有码中文字幕av| 色综合久久综合欧美综合网| 午夜激情小视频一区二区| 久久精品夜色国产亚洲av| 日本高清日本在线免费| 中文字幕乱码一区二区免费| 国产精品久久一区二区三区| 制服 丝袜 亚洲 中文 综合| 美女裸体十八禁免费网站| 国产熟女一区二区三区四区| 无套内谢少妇高清毛片| 国产精品无码久久久久AV| 亚洲精品国产自在现线最新 | 亚洲熟妇色xxxxx亚洲| 国产高清在线精品一区二区三区| 日韩永久永久永久黄色大片| 亚洲国产午夜精品理论片| 97精品国产91久久久久久久| 精品国产免费人成网站| 国产成人精品无码片区在线观看| 国产精品永久久久久久久久久 | 精品久久精品久久精品九九| 精品人妻二区中文字幕|