Отсутствует конвертер при использовании Spring LdapTemplate с аннотацией Grails Validateable

Я использую библиотеку Spring LDAP (docs) в Grails. применение. У меня есть класс с аннотацией @Entry, поэтому он сопоставлен с сервером LDAP. Все это работает довольно красиво.

Однако, когда я добавляю аннотацию Grails @Validateable (чтобы включить проверку класса LDAP аналогично классам домена Grails) и пытаюсь получить данные из LDAP (т.е. операция findAll в LdapUserRepo или аналогичная), я получаю следующее исключение: Сообщение : Отсутствует преобразователь из класса java.lang.String в интерфейс org.springframework.validation.Errors, это необходимо для ошибок поля в классе Entry com.ldap.portal.LdapUser

По сути, похоже, что преобразование AST, выполняемое аннотацией @Validateable, создает дополнительные поля (а именно поле ошибок) в объекте LdapUser. Похоже, что Spring LDAP при обработке логики @Entry предполагает сопоставление по умолчанию для свойства fields (вероятно, интерпретируя его как строковое поле в объекте LDAP). Когда он ничего не получает от сервера LDAP, он пытается установить в поле типа ValidationErrors значение типа String — пустую строку.

Я немного поискал в github и нашел этот код кажется актуальным и может подтвердить мою теорию.

Мой вопрос: ожидается ли такое поведение для аннотаций, и как можно предотвратить неправильную обработку полей, добавленных одной аннотацией, другой аннотацией?


person Ryan Heathcote    schedule 11.08.2015    source источник


Ответы (1)


В настоящее время лучший обходной путь, который я придумал для моей конкретной проблемы, — добавить поле ошибок в мой объект LdapUser и пометить его как переходный (чтобы LDAP его проигнорировал):

@Transient
ValidationErrors errors
person Ryan Heathcote    schedule 11.08.2015