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