Ich kann keine Validierungen für die Arbeit bekommen. Ich habe diesen einfachen Endpunkt, der Teil einer Spring Boot-Anwendung ist:
%Vor%Dann das zu validierende UserDTO:
%Vor%Und es verarbeitet immer jede Anfrage, auch mit leeren Feldern. Ich habe sogar einen Testendpunkt erstellt, um zu sehen, ob das Problem die Validierungen im DTO hatte
%Vor% Aber das funktioniert auch nicht, es gibt glücklicherweise jeden Int zurück, den es empfängt. Falls es darauf ankommt, ist mein Endpunkt ein @Service
, und hier sind die relevanten Teile meiner Abhängigkeits-Baumstruktur:
Ich habe auch innerhalb von HibernateValidator
Haltepunkte gesetzt und gesehen, dass zwei seiner Methoden aufgerufen werden, also sieht es so aus, als würde es laufen. Nur nicht validieren.
BEARBEITEN : Meine Trikotkonfiguration
%Vor%Wenn es darauf ankommt, ist mein Endpunkt ein @ Service
Versuchen Sie, den Stereotyp auf @Controller
Überprüfen Sie, ob diese Bean in Ihrer Webkonfiguration definiert ist.
%Vor% Überprüfen Sie auch, ob Ihre Konfiguration @EnableWebMvc
Annotation
ValidationFeature ist wie in Trikot 2.0 automatisch erkennbar. Sie müssen es nicht explizit registrieren.
Fügen Sie die Flagge ein, property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true)
in Jersey Resource Config für die Validierungsnachricht, die in der Antwort gesendet wird.
Stellen Sie sicher, dass sich die jersey-bean-validation.jar im Klassenpfad befindet (in Ihrem Fall ist dies bereits der Fall).
Einfaches Beispiel,
%Vor%beziehen Sie sich auf Ссылка
Fügen Sie Ihrer JerseyConfig-Methode die folgende Konfiguration hinzu
%Vor% @ Funtiks Vorschlag, es zu einem @Controller
zu machen, ist einen Versuch wert, aber ich vermute, dass Ihr Problem darin besteht, dass Sie den Fehler in Ihrem Controller nicht behandeln.
Ich bin kein Experte dafür, also empfehlen Sie, dass Sie ein wenig weiterlesen, aber ich denke, dass Sie ein BindingResult hinzufügen müssen, das im Falle von Validierungsfehlern aufgefüllt wird. Sie testen das und reagieren entsprechend. Also würde ich deinen Controller in etwas wie:
ändern %Vor% Das ist jetzt wahrscheinlich kein Problem, aber wenn Sie Ihrer Methode einen @ModelAttribute
annotierten Parameter hinzufügen, müssen Sie daran denken, dass der Parameter BindingResult
unmittelbar danach erscheinen muss, sonst funktionieren die Dinge nicht. Ich kann mich nicht an das genaue Problem erinnern, das Sie sehen, wenn Sie es nicht tun, aber es ist schwierig zu finden, wenn Sie das oben genannte nicht wissen. Ich habe definitiv gesehen, dass es in den Frühlingsdokumenten irgendwo dokumentiert ist, kann aber nichts anderes finden als diesen Forenbeitrag gleich jetzt.
Tags und Links java jersey validation spring-boot hibernate-validator