我在 Grails 应用程序中使用 Spring LDAP ( docs ) 库。我有一个用 @Entry 注释注释的类,因此它被映射到 LDAP 服务器。这一切都非常漂亮。
但是,当我添加 Grails @Validateable 注释(以启用与 Grails 域类类似的验证 LDAP 类)并尝试从 LDAP 检索数据(即 LdapUserRepo 上的 findAll 操作或类似操作)时,我得到以下异常:
消息:缺少从类 java.lang.String 到接口(interface) org.springframework.validation.Errors 的转换器,这是条目类 com.ldap.portal.LdapUser 上的字段错误所必需的
基本上,@Validateable 注释执行的 AST 转换似乎在 LdapUser 对象上产生了额外的字段(即错误字段)。似乎 Spring LDAP 在处理 @Entry 逻辑时假定了 fields 属性的默认映射(可能将其解释为 LDAP 对象上的字符串字段)。当它从 LDAP 服务器获取任何信息时,它会尝试将 ValidationErrors 类型的字段设置为 String 类型的值——一个空字符串。
我在 github 上做了一些查找,发现 this code这似乎相关,可能支持我的理论。
我的问题是:注释是否会出现这种行为,如何防止一个注释添加的字段被另一个注释不恰本地处理?
最佳答案
目前,我针对特定问题提出的最佳解决方法是将错误字段添加到我的 LdapUser 对象并将其标记为 transient (以便 LDAP 忽略它):
@Transient
ValidationErrors errors
关于spring - 使用带有 Grails Validateable 注释的 Spring LdapTemplate 时缺少转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952557/