Rumah > Java > API Pengesahan Kacang untuk mengarahkan pengesah secara dinamik untuk mengabaikan anotasi kekangan tertentu pada medan tertentu POJO

API Pengesahan Kacang untuk mengarahkan pengesah secara dinamik untuk mengabaikan anotasi kekangan tertentu pada medan tertentu POJO

王林
Lepaskan: 2024-02-08 22:51:22
ke hadapan
847 orang telah melayarinya

Editor PHP Zimo akan memperkenalkan anda kepada API Pengesahan Kacang dalam artikel ini, dan menumpukan pada salah satu ciri pentingnya - secara dinamik mengarahkan pengesah untuk mengabaikan anotasi kekangan tertentu pada medan tertentu POJO. API Pengesahan Bean ialah cara standard untuk melaksanakan pengesahan data dalam aplikasi Java Ia menyediakan cara yang mudah dan fleksibel untuk mentakrif dan menggunakan peraturan pengesahan melalui anotasi. Mengarahkan pengesah secara dinamik untuk mengabaikan anotasi kekangan pada medan tertentu memberikan pembangun dengan fleksibiliti dan kebolehkawalan yang lebih besar, membolehkan peraturan pengesahan dilaraskan secara fleksibel dalam senario tertentu, dengan itu meningkatkan kebolehselenggaraan dan pengembangan jantina. Seterusnya, kami akan menyelidiki cara menggunakan ciri ini dan senario aplikasi praktikal.

Kandungan soalan

Saya mempunyai pojo di mana beberapa medan dianotasi dengan @notempty:

public class sampleforminputdto {

  @notempty
  private string textarea;

  private int myint = 0;

  @notempty
  private string mytext = "somevalue";

  public string gettextarea() {
    return textarea;
  }

  public void settextarea(string textarea) {
    this.textarea = textarea;
  }
}
Salin selepas log masuk

Tujuannya adalah untuk menyemak medan untuk memastikan ia mengandungi nilai, iaitu tidak batal dan tidak kosong.

Jika saya menciptanya menggunakan pembina tanpa parameter sampleforminputdto 的实例,则字段 textarea pada mulanya akan menjadi batal dan oleh itu harus dan gagal pengesahan seperti yang diharapkan.

SampleFormInputDTO sampleFormInputDTO = new SampleFormInputDTO();

ValidatorFactory validatorFactory =
    Validation.byDefaultProvider()
        .configure()
        .messageInterpolator(new ParameterMessageInterpolator())
        .buildValidatorFactory();

Validator validator = validatorFactory.getValidator(sampleFormInputDTO);

Set<ConstraintViolation<SampleFormInputDTO>> violationSet = validator.validate();
Salin selepas log masuk

Saya tertanya-tanya sama ada mungkin untuk mengarahkan contoh pengesah secara dinamik/program supaya tidak mengesahkan anotasi kekangan khusus untuk medan tertentu?

Katakan saya telah menentukan bahawa sebagai sebahagian daripada mengendalikan panggilan api rehat, saya mahu sampleforminputdto 类型的字段 textarea membenarkan rentetan kosong secara dinamik, tetapi hanya untuk medan tertentu itu. Tidak menjejaskan sebarang anotasi kekangan yang mungkin wujud pada medan lain dalam pojo yang sama.

Adakah ini mungkin?

Penyelesaian

Anda mungkin ingin melihat Kumpulan Pengesahan.

public class sampleforminputdto {

  @notempty(groups = group1.class)
  private string textarea;

  private int myint = 0;

  @notempty
  private string mytext = "somevalue";

  public string gettextarea() {
    return textarea;
  }

  public void settextarea(string textarea) {
    this.textarea = textarea;
  }
}
Salin selepas log masuk

Anda kemudiannya boleh mengawal kekangan mana yang disertakan dalam pengesahan dan yang tidak termasuk dalam pengesahan, contohnya:

validator.validate(sampleforminputdto);
Salin selepas log masuk

hanya akan menyemak atribut mytext, tetapi akan kelihatan seperti:

validator.validate(sampleFormInputDTO, Group1.class, Default.class);
Salin selepas log masuk

Akan mengesahkan kedua-duanya.

Atas ialah kandungan terperinci API Pengesahan Kacang untuk mengarahkan pengesah secara dinamik untuk mengabaikan anotasi kekangan tertentu pada medan tertentu POJO. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan