代码之家  ›  专栏  ›  技术社区  ›  Dan Menes

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

  •  1
  • Dan Menes  · 技术社区  · 6 年前

    我正在尝试使用SpringLDAP的对象目录映射将对象写入LDAP服务器。对象被注释为 有几个字段用 @属性 .

    只要填充了所有带注释的字段,一切都正常。但是如果一个字段的值 我的属性 创造 更新 方法 LdapTemplate模板 抛出错误。服务器拒绝该操作,并抱怨“属性'myattribute'的“属性值”语法不正确”

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dan Menes    6 年前

    我已经找到了一个解决方案,它对我的应用程序来说可能不是最优雅的,但它是有效的。而不是将Java字段声明为type ,将其声明为类型 列表

    @Entry( objectClasses={"myObject"} )
    public class MyDataContainer {
    
        @Attribute("myattribute")
        private List<String> _myattribute = new ArrayList<String>(1);
    
        public String getMyAttribute() {
            if ( _myattribute.length() > 0 ) {
                return _myattribute.get(0);
            }
            return null;
        }
    
        public void setMyAttribute( String value ) {
            _myattribute.clear();
            value = ( value == null ) ? "" : value.trim();
            if ( ! "".equals( value ) ) {
                _myattribute.add( value );
            }
        }
    }