Ich habe einen Dropwizard-Dienst, der eine PUT eines JSON-Dokuments akzeptiert, das eine Bean darstellt. Ich mache Gebrauch von Zwang Anmerkungen in der Bean-Implementierung und verwenden Sie die @Valid Anmerkung in meiner Ressource-Methode:Dropwizard und Überprüfen von Listen von Objekten
@PUT
public Response write(@Valid MyBean bean);
und alles funktioniert recht gut.
Nun möchte ich jedoch eine Array von Objekten in der JSON übergeben. Ich änderte einfach die Methode Signatur
@PUT
public Response write(@Valid List<MyBean> beans);
und es funktioniert im Allgemeinen, aber wenn es Validierungsfehler sind dann die Antwort ist nicht sehr benutzerfreundlich. Zum Beispiel, wenn ich in 100 Bohnen im Array schreiben, und ein von ihnen ist eine ‚Namen‘ Eigenschaft fehlt, dann ist die Antwort
{"errors":["name may not be empty"]}
ohne Angabe von die Bohne in der Anfrage hat das Problem.
Gibt es eine Möglichkeit, dies zu überwinden?
Fehlt das, gibt es eine Möglichkeit für mich, einen Validator in der Resource-Klasse zu erhalten, so dass ich all dies selbst handhaben kann?
Danke - ich landete nur es selbst zu tun (nicht sicher, warum ich dachte, den Validator zu injizieren würde schwierig sein) –
Ich frage mich, ob das eine gute Ergänzung wäre. Wenn Sie jedoch Ihre Bestätigungsnachricht von einer anderen Eigenschaft derselben Bean abhängig machen, wie validieren Sie diese? Sie erhalten eine Abhängigkeitsprüfung bis zu dem Punkt, an dem die gesamte Bean null ist. An diesem Punkt wird der Nachrichteninterpolator bei der Validierung die NPE verwenden, was nicht wirklich gut wäre. Ich kann mir vorstellen, dass das ihre Motivation war, dies nicht zu tun. Außerdem: Die Hibernate-Validierung unterstützt standardmäßig keine Listen oder Arrays, weshalb dies möglicherweise nie ein Problem war. DW hackt das an sich :) – pandaadb