我在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看似相关并可能支持我的理论。
我的问题是:注释会出现这种行为吗?如何防止一个注释添加的字段被另一个注释不恰当地处理?
答案 0 :(得分:1)
目前我针对具体问题提出的最佳解决方法是在LdapUser对象中添加一个错误字段,并将其标记为瞬态(以便LDAP忽略它):
@Transient
ValidationErrors errors