@Valid arbeitet nicht mit JAX-RS mit Spring Boot

9

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:

%Vor%

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%     
mark951131b 15.12.2015, 08:37
quelle

4 Antworten

0
  

Wenn es darauf ankommt, ist mein Endpunkt ein @ Service

Versuchen Sie, den Stereotyp auf @Controller

zu setzen

Überprüfen Sie, ob diese Bean in Ihrer Webkonfiguration definiert ist.

%Vor%

Überprüfen Sie auch, ob Ihre Konfiguration @EnableWebMvc Annotation

hat     
WeMakeSoftware 15.12.2015 09:14
quelle
0

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 Ссылка

    
Bharath 08.08.2016 07:39
quelle
0

Fügen Sie Ihrer JerseyConfig-Methode die folgende Konfiguration hinzu

%Vor%     
user2964500 15.09.2016 14:12
quelle
-1

@ 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.

    
DaveyDaveDave 15.12.2015 09:44
quelle