spring - 使用带有 Grails Validateable 注释的 Spring LdapTemplate 时缺少转换器

标签 spring grails spring-ldap

我在 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/

相关文章:

java - 无法将项目方面动态 Web 模块的版本更改为 2.4

java - 如何避免 Spring 缓存中区分大小写的键?

hibernate - 无法使用Postgres DB启动Grails 3.3.8应用程序

spring - 如何在Spring LDAP中添加LDAP缓存?

java - 使用 Spring LDAP 获取内部属性

Spring Security LDAP 配置

java - spring 3中的springmodules包发生了什么

java - 无法检测测试类的默认资源位置

java - 请求没有被重定向,当通过nginx时

Grails - 将参数绑定(bind)到不同名称的命令对象字段