2014-05-20 10 views
5

Ich habe mehrere Validierungsanmerkungen für jedes Feld meiner Bean, aber ich möchte nur die erste fehlgeschlagene Nachricht für jedes Feld in meiner Spring MVC-Anwendung anzeigen, wo ich JSR 303 verwende Es werden alle Einschränkungen ausgewertet und alle Nachrichten für jedes Feld angezeigt. Wenn ein Feld leer ist, möchte ich seine Min- und Max-Einschränkung nicht bewerten.Zeige nur eine Fehlermeldung pro Feld mit JSR 303

Ich habe versucht mit Gruppen, aber es funktioniert nicht wie erwartet und mehr über Ich muss den Validator explizit so etwas wie validator.validate() aufrufen, die ich vermeiden möchte.

Gibt es eine Alternative, um dies zu erreichen, indem Sie einige Validierungsklassen überschreiben?

Ich habe mindestens 3 Einschränkungen für jedes Feld und maximal 5. Alle diese Nachrichten für jedes Feld anzuzeigen sieht überhaupt nicht gut aus. Ich verklage Feder 4.x und überwache 4.x

Antwort

1

Der Weg zu gehen ist über Gruppen und Gruppensequenzen. Dies ist die einzige portable Funktion, die eine Validierungsreihenfolge und die Beendigung der Validierung sicherstellt, wenn eine Einschränkung innerhalb einer Gruppe fehlschlägt. Können Sie die Einschränkungen in Ihrer Bean nicht den entsprechenden Gruppen zuweisen und dann die Standardgruppensequenz für die Bean selbst neu definieren? Siehe auch http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-default-group-class

+0

Gruppen funktionieren nicht wie erwartet, in meinem Fall. Außerdem muss ich den Validator explizit aufrufen, indem ich diese Gruppen übergebe. – user1614862

+0

Was mit Gruppen passiert ist, dass ... sagen wir, ich habe zwei Form-Bean-Variablen als Name und E-Mail, dann habe ich Beschränkungen für beide Variablen "@NotEmpty" und zusätzlich "@Email" für E-Mail-Variable. Wenn ich jetzt nichts in das Namensfeld und das falsche E-Mail-Format für das E-Mail-Feld eingebe, dann sollte die Fehlermeldung "Dieses Feld ist erforderlich" für das Namensfeld und "Ungültige E-Mail" -Fehlermeldung für das E-Mail-Feld angezeigt werden. Bei Gruppen wird nur die Fehlermeldung nur für das Namensfeld und nichts für das E-Mail-Feld angezeigt. Da nur erste Gruppenfelder validiert werden. – user1614862

+0

Sie haben Recht, Ihr spezifischer Anwendungsfall wird derzeit nicht unterstützt. Siehe auch https://hibernate.atlassian.net/browse/HV-462 und https://hibernate.atlassian.net/browse/BVAL-248. Es gibt also eine mühsame Arbeit über Gruppen und Gruppensequenzen. Siehe das HV-Problem von mentioend. – Hardy

Verwandte Themen