Heim  >  Artikel  >  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

王林
王林nach vorne
2024-02-08 22:51:22752Durchsuche

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;
  }
}

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();

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;
  }
}

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

validator.validate(sampleforminputdto);

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

validator.validate(sampleFormInputDTO, Group1.class, Default.class);

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen