2017-01-18 1 views
1

Ich mache Validierung mit JSR-303 in meiner Spring-App, es funktioniert wie benötigt.JSR-303 Validierung in Spring-Controller und bekommen @ JsonProperty Name

Dies ist ein Beispiel:

@Column(nullable = false, name = "name") 
    @JsonProperty("customer_name") 
    @NotEmpty 
    @Size(min = 3, max = 32) 
    private String name; 

und REST-API-Clients customer_name als Name Eingabefeld verwenden, das org.springframework.validation.FieldError kehren name als Name des Feldes zu API Knospe Validierungsfeld Fehler senden.

Gibt es eine Möglichkeit, JSON-ish Name zu bekommen, der in @JsonProperty spezifiziert ist? Oder muss ich einen eigenen Mapper implementieren, um Klassenfeldnamen in seine JSON-Alternative zu mappen?

Edit1: Das Umbenennen von Klassenfeldern in Namen, die JSON-Namen entsprechen, ist (aus vielen Gründen) nicht alternativ.

+0

Diese [Antwort] (https://Stackoverflow.com/a/44281799/1426227) kann Ihnen einige Einblicke geben, wie man eine Constraint-Verletzung analysiert und dann Jackson verwendet, um den tatsächlichen JSON-Eigenschaftsnamen zu finden. –

Antwort

0

Es gibt derzeit keine Möglichkeit, dies zu erreichen. Wir haben ein Problem in der Referenzimplementierung: HV-823.

Dies würde das Problem auf der Seite des Hibernate-Validators beheben (d. H. Den von Path.Node#getName() erwarteten Namen zurückgeben), es würde etwas mehr Prüfung erfordern, ob Spring tatsächlich den Namen von dort übernimmt.

Vielleicht sind Sie daran interessiert, diesen zu implementieren?

+0

Vor einer Weile schrieb ich dies [Antwort] (https://Stackoverflow.com/a/44281799/1426227). Es geht darum, einen Constraint-Verstoß zu analysieren und dann Jackson zu verwenden, um den tatsächlichen JSON-Eigenschaftsnamen zu finden. –

Verwandte Themen