Heim > Java > Bean-Validierungs-API, um den Validator dynamisch anzuweisen, bestimmte Einschränkungsanmerkungen für bestimmte Felder eines POJO zu ignorieren

Bean-Validierungs-API, um den Validator dynamisch anzuweisen, bestimmte Einschränkungsanmerkungen für bestimmte Felder eines POJO zu ignorieren

王林
Freigeben: 2024-02-08 22:51:22
nach vorne
843 Leute haben es durchsucht

PHP-Editor Zimo stellt Ihnen in diesem Artikel die Bean Validation API vor und konzentriert sich auf eine ihrer wichtigen Funktionen – die dynamische Anweisung des Validators, bestimmte Einschränkungsanmerkungen für bestimmte POJO-Felder zu ignorieren. Die Bean Validation API ist eine Standardmethode zur Datenvalidierung in Java-Anwendungen. Sie bietet eine einfache und flexible Möglichkeit, Validierungsregeln durch Annotationen zu definieren und anzuwenden. Die dynamische Anweisung des Validators, Einschränkungsanmerkungen für bestimmte Felder zu ignorieren, bietet Entwicklern mehr Flexibilität und Kontrollierbarkeit, sodass die Validierungsregeln in bestimmten Szenarien flexibel angepasst werden können, wodurch die Wartbarkeit und Erweiterung des Codes verbessert wird. Als Nächstes befassen wir uns mit der Nutzung dieser Funktion und praktischen Anwendungsszenarien.

Frageninhalt

Ich habe ein Pojo mit einigen Feldern, die mit @notempty:

versehen sind
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;
  }
}
Nach dem Login kopieren

Der Zweck besteht darin, die Felder zu überprüfen, um sicherzustellen, dass sie einen Wert enthalten, d. h. nicht null und nicht leer.

Wenn ich es mit dem parameterlosen Konstruktor erstelle sampleforminputdto 的实例,则字段 textarea, ist es zunächst null und sollte daher wie erwartet bei der Validierung fehlschlagen.

SampleFormInputDTO sampleFormInputDTO = new SampleFormInputDTO();

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

Validator validator = validatorFactory.getValidator(sampleFormInputDTO);

Set<ConstraintViolation<SampleFormInputDTO>> violationSet = validator.validate();
Nach dem Login kopieren

Ich habe mich gefragt, ob es möglich ist, eine Validatorinstanz dynamisch/programmgesteuert anzuweisen, eine bestimmte Einschränkungsanmerkung für ein bestimmtes Feld nicht zu validieren?

Nehmen wir an, ich habe festgestellt, dass ich im Rahmen der Verarbeitung von Rest-API-Aufrufen sampleforminputdto 类型的字段 textarea leere Zeichenfolgen dynamisch zulassen möchte, jedoch nur für dieses bestimmte Feld. Beeinträchtigt keine Einschränkungsanmerkungen, die möglicherweise in anderen Feldern im selben Pojo vorhanden sind.

Ist das möglich?

Problemumgehung

Vielleicht möchten Sie einen Blick auf Verifizierungsgruppen werfen.

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;
  }
}
Nach dem Login kopieren

Sie können dann steuern, welche Einschränkungen in die Validierung einbezogen werden und welche nicht, zum Beispiel:

validator.validate(sampleforminputdto);
Nach dem Login kopieren

prüft nur das Attribut mytext, sieht aber so aus:

validator.validate(sampleFormInputDTO, Group1.class, Default.class);
Nach dem Login kopieren

Wird beides überprüfen.

Das obige ist der detaillierte Inhalt vonBean-Validierungs-API, um den Validator dynamisch anzuweisen, bestimmte Einschränkungsanmerkungen für bestimmte Felder eines POJO zu ignorieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage