[Bean Validation] Bei der Rückgabe von java.lang.Boolean mit einer Methode, die mit "is ~" beginnt. Kann nicht mit AssertTrue / AssertFalse validiert werden [Java]

Der Inhalt des Artikels ist als Titel.

Die Situation, die passiert ist

Bei der Korrelationsprüfung mit "AssertTrue" wurde die Methode zum Zeitpunkt der Validierung nicht aufgerufen, als ich versuchte, eine Validierung wie "Fehler 1 bei" false ", Fehler 2 bei" null "" durchzuführen.

@AssertTrue(message = "Hogehoge")
@NotNull(message = "Fuga Fuga")
private Boolean isValid() {
  /*Korrelationsprüfung*/
}

Ursache

Aus dem offiziellen Dokument geht Folgendes hervor. Einfach ausgedrückt ist java.lang.Boolean ein Objekt, daher ist die Angabe eines Methodennamens, der mit is ~ beginnt, ein Verstoß gegen die Konvention.

Es ist eine Selbstverständlichkeit, wenn Sie darüber nachdenken, aber es ist kompliziert, also bitte verzeihen Sie mir ...

What is a getter? The JavaBeans specification specifies that a getter is a method whose

  • name starts with get and has a return type but no parameter
  • name starts with is, has no parameter and is returning boolean

Aussteller: Bean Validation Specification

Bewältigung

Sie können es aufrufen lassen, indem Sie den Methodennamen ändern. In diesem Fall halte ich es jedoch nicht für erforderlich, "Boolean" anzugeben.

Es gibt auch das Problem, Getter und Namen für Felder zu erhalten.

@AssertTrue(message = "Hogehoge")
@NotNull(message = "Fuga Fuga")
private Boolean getValid() {
  /*Korrelationsprüfung*/
}

Ich konnte keine andere Lösung finden.

Impressionen

Ich dachte, ich könnte mehrere Korrelationsprüfungen für dasselbe Feld ausführen, ohne eine Anmerkung zu erstellen, aber es hat nicht funktioniert. Es ist ziemlich schmerzhaft zu versuchen, Wertschöpfung und Validierung in Einklang zu bringen, daher ist es ratsam, das Validierungsobjekt und das Werterfassungsobjekt zu trennen, insbesondere wenn die Dinge kompliziert werden ...

Recommended Posts

[Bean Validation] Bei der Rückgabe von java.lang.Boolean mit einer Methode, die mit "is ~" beginnt. Kann nicht mit AssertTrue / AssertFalse validiert werden [Java]
[Bean Validation] Bei der Rückgabe von java.lang.Boolean mit einer Methode, die mit "is ~" beginnt. Kann nicht mit AssertTrue / AssertFalse validiert werden [Java]
Ursache ist nicht sichtbar, wenn Methoden anderer Klassen in Java aufgerufen werden
Bean Validation mit Micronaut (Java) hinzufügen
[Java] So legen Sie den Proxy beim Starten von Java fest
Ein Memorandum, in dem IME nicht mit VS Code aktiviert werden kann (Ubuntu 20.04)
[Java] Wenn Sie das URL-Format mit Bean Validation überprüfen, ist es möglicherweise besser, @URL von Hibernate Validator nicht zu verwenden.