91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Hibernate中Validation自定義注解實現校驗

發布時間:2021-05-27 17:55:47 來源:億速云 閱讀:316 作者:Leah 欄目:編程語言

怎么在Hibernate中Validation自定義注解實現校驗?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

自定義注解進行校驗的步驟

  • 寫一個校驗注解,在注解中指定校驗器類,校驗注解與校驗器一般一一對應。

  • 寫一個校驗器類并在校驗器類中寫校驗邏輯,校驗器必須實現ConstraintValidator<?, ?>接口,第一個參數是對應的注解,第二個參數是要校驗的屬性的類型

代碼示例

校驗注解

package com.kunlun.validation.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

import com.kunlun.validation.validator.KlPatternValidator;


@Documented
// 指定該注解可以使用的地方
@Target(value= {ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
// 指定實際進行校驗的校驗器,該校驗器是自己寫的且必須實現ConstraintValidator接口
@Constraint(validatedBy=KlPatternValidator.class)
public @interface KlPattern {
  /*
   * 用于驗證的注解下列這三個方法必須要,這是Hibernate Validation框架要求的,否則程序再在調用的時候會報錯
   * default用于對屬性給定默認值
   * 如果不給定默認值,則在使用注解的時候必須給屬性指定屬性值,否則報錯
   * 給定默認值時,在使用注解的時候可以不用指定屬性值
   */
  String message() default "不符合正則!";

  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};

  // 沒加default給定默認值,使用注解的時候該屬性必須賦值,否則報錯
  String regex();
  // value屬性,加上了default "mercy" 使得該屬性在使用注解的時候可以不用輸入也不會報錯
  String value() default "mercy";
}

與上面校驗注解對應的校驗器類

package com.kunlun.validation.validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import com.kunlun.validation.annotation.KlPattern;

public class KlPatternValidator implements ConstraintValidator<KlPattern, String> {

  private String regex;

  /**
   * 通過initialize()可以獲取注解里的屬性值
   */
  @Override
  public void initialize(KlPattern constraintAnnotation) {
    ConstraintValidator.super.initialize(constraintAnnotation);
    regex = constraintAnnotation.regex();
  }

  /**
   * 實際驗證邏輯
   * 返回值為true表示驗證通過,
   * 返回值為false表示驗證未通過
   */
  @Override
  public boolean isValid(String s, ConstraintValidatorContext ctx) {

    // 當前前端傳過來的請求參數是空串,或者沒傳的時候,不進行后續正則校驗
    if ("".equals(s) || s == null) {
      return true;
    }

    // 進行正則校驗
    if(s.matches(regex)) {
      return true;
    }

    return false;
  }
}

看完上述內容,你們掌握怎么在Hibernate中Validation自定義注解實現校驗的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

务川| 怀宁县| 天祝| 盘山县| 成安县| 鄄城县| 三台县| 崇州市| 浮梁县| 安乡县| 石家庄市| 汽车| 佳木斯市| 河西区| 绥宁县| 和田市| 桃源县| 麟游县| 墨脱县| 札达县| 广西| 杭锦旗| 宜兴市| 安达市| 丽水市| 宿迁市| 曲阳县| 出国| 山丹县| 格尔木市| 顺义区| 禄丰县| 茂名市| 建平县| 吉木萨尔县| 冷水江市| 武义县| 临猗县| 阜城县| 冕宁县| 涞源县|