2017-01-18 16 views
1

Я выполняю проверку с помощью JSR-303 в моем приложении Spring, он работает по мере необходимости.Проверка JSR-303 в контроллере весны и получение @JsonProperty name

Это пример:

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

И REST API клиенты используют customer_name в качестве имени поля ввода, которые посылают к API бутон ошибки поля проверки org.springframework.validation.FieldError возвращает name как имя поля.

Есть ли способ получить JSON-ish имя, указанное в @JsonProperty? Или мне нужно реализовать собственный картограф для сопоставления имени полей классов в его альтернативе JSON?

Редактирование1: Переименование полей классов в именах, соответствующих именам JSON, не является альтернативой (по многим причинам).

+0

Этот [ответ] (https://stackoverflow.com/a/44281799/1426227) может дать вам некоторое представление о том, как разобрать нарушение ограничения, а затем использовать Джексон, чтобы найти фактическое имя свойства JSON. –

ответ

0

В настоящее время этого не сделать. У нас есть проблема для этого в эталонной реализации: HV-823.

Это относится к проблеме на стороне валидатора Hibernate (т. Е. Возвращает имя, которое вы ожидаете от Path.Node#getName()), для этого потребуется еще немного проверки того, действительно ли Spring набирает имя оттуда.

Возможно, вам было бы интересно помочь с реализацией этого?

+0

Некоторое время назад я написал это [ответ] (https://stackoverflow.com/a/44281799/1426227). Речь идет о том, как разобрать нарушение ограничений, а затем использовать Джексон, чтобы найти фактическое имя свойства JSON. –