缺少 Spring LDAP 对象目录映射器注释的属性

我正在尝试使用 Spring LDAP 的对象目录映射将对象写入 LDAP 服务器。该对象用@Entity注释,几个字段用@Attribute注释。

只要填充了所有带注释的字段,一切正常。但是如果一个字段的值,比如myattribute,是 null 或一个空字符串,LdapTemplatecreateupdate方法抛出错误。服务器拒绝该操作,并抱怨“属性‘myattribute’的属性值‘’在语法上不正确”

LDAP 模式允许缺少“myattribute”(它是相关对象类的“可能”属性),但如果存在,则不允许为空(它具有目录字符串语法)。我无法更改架构。

当相应的 POJO 字段为空或空时,是否有某种方法可以让 Spring LDAP 省略“myattribute”,而不是尝试使用空值创建属性?


幕布斯7119047
浏览 165回答 1
1回答

一只甜甜圈

我找到了一个解决方案,它对我的应用程序来说可能不是最优雅的,但它确实有效。不是将 Java 字段声明为String类型,而是将其声明为List类型。然后,在 setter 中,如果值为空或 null,我将列表长度设置为零,而不是设置单个空值。@Entry( objectClasses={"myObject"} )public class MyDataContainer {&nbsp; &nbsp; @Attribute("myattribute")&nbsp; &nbsp; private List<String> _myattribute = new ArrayList<String>(1);&nbsp; &nbsp; public String getMyAttribute() {&nbsp; &nbsp; &nbsp; &nbsp; if ( _myattribute.length() > 0 ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return _myattribute.get(0);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }&nbsp; &nbsp; public void setMyAttribute( String value ) {&nbsp; &nbsp; &nbsp; &nbsp; _myattribute.clear();&nbsp; &nbsp; &nbsp; &nbsp; value = ( value == null ) ? "" : value.trim();&nbsp; &nbsp; &nbsp; &nbsp; if ( ! "".equals( value ) ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _myattribute.add( value );&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java