将Spring LdapTemplate与Grails Validateable注释一起使用时缺少转换器

时间:2015-08-11 21:48:43

标签: spring grails spring-ldap

我在Grails应用程序中使用Spring LDAP(docs)库。我有一个使用@Entry注释注释的类,因此它被映射到LDAP服务器。这一切都很有效。

但是,当我添加Grails @Validateable注释(以启用类似于Grails域类的验证LDAP类)并尝试从LDAP检索数据(即LdapUserRepo上的findAll操作或类似操作)时,我得到以下内容例外:     消息:缺少从类java.lang.String到接口org.springframework.validation.Errors的转换器,这对于Entry类com.ldap.portal.LdapUser上的字段错误是必需的

基本上,似乎@Validateable注释执行的AST转换正在LdapUser对象上生成额外的字段(即错误字段)。在处理@Entry逻辑时,Spring LDAP似乎假定fields属性的默认映射(可能将其解释为LDAP对象上的字符串字段)。当它从LDAP服务器中得不到任何内容时,它会尝试将ValidationErrors类型的字段设置为String类型的值 - 一个空字符串。

我做了一些寻找github并发现this code看似相关并可能支持我的理论。

我的问题是:注释会出现这种行为吗?如何防止一个注释添加的字段被另一个注释不恰当地处理?

1 个答案:

答案 0 :(得分:1)

目前我针对具体问题提出的最佳解决方法是在LdapUser对象中添加一个错误字段,并将其标记为瞬态(以便LDAP忽略它):

@Transient
ValidationErrors errors