Bedingte Bean-Validierung
Ich verwende Bean Validation in meinem JSF-Projekt. Jetzt bin ich auf eine Situation gestoßen, in der ich eine Methode NUR dann validieren möchte, wenn eine vorhergehende Methode validiert wurde.
Ich werde ein Beispiel geben:
@AssertTrue(message="{invalidCode}")
private boolean isValidActivationCode() { ... }
if(isValidActivationCode()) {
@AssertTrue(message="{alreadyActivated}")
private boolean isAlreadyActivated() { ... }
}
Da ich den Aktivierungscode per Parameter erhalten werde, möchte ich ihn zuerst validieren. Wenn es nicht gültig ist, wird es eine Verletzung verursachen. Wenn ja, kann ich nicht einmal überprüfen, ob es bereits aktiviert ist (da der Code ungültig ist). Ist es also möglich, etwas wie das oben Genannte zu erreichen (die Funktion der if-Anweisung, ich weiß, dass dies nicht funktionieren würde, aber sie zeigt, was ich zu erreichen versuche).
Danke im Voraus
Aktualisieren
Problemumgehung wie Ravi K erwähnt:
@AssertTrue(message="{invalidCode}")
private boolean isValidActivationCode() { ... }
@AssertTrue(message="{alreadyActivated}")
private boolean isAlreadyActivated() { return isValidActivationCode() ? ... : true; }
Obgleich ich mich frage, gibt es eine saubere Weise, dieses zu lösen? Wenn bald niemand eine Antwort gibt, gehe ich davon aus, dass es dafür keine saubere Lösung gibt, und akzeptiere die Problemumgehung von Ravi K als Antwort auf dieses Problem.