2015-08-11 2 views
1

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

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

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

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

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

ответ

1

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

@Transient 
ValidationErrors errors 
Смежные вопросы