为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2021-09-29 15:12:54
我正在尝试使用 Spring LDAP 的对象目录映射将对象写入 LDAP 服务器。该对象用@Entity注释,几个字段用@Attribute注释。只要填充了所有带注释的字段,一切正常。但是如果一个字段的值,比如myattribute,是 null 或一个空字符串,LdapTemplate的create和update方法会抛出错误。服务器拒绝该操作,并抱怨“属性‘myattribute’的属性值‘’在语法上不正确”LDAP 模式允许缺少“myattribute”(它是相关对象类的“可能”属性),但如果存在,则不允许为空(它具有目录字符串语法)。我无法更改架构。当相应的 POJO 字段为空或空时,是否有某种方法可以让 Spring LDAP 省略“myattribute”,而不是尝试使用空值创建属性?
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我找到了一个解决方案,它对我的应用程序来说可能不是最优雅的,但它确实有效。不是将 Java 字段声明为String类型,而是将其声明为List类型。然后,在 setter 中,如果值为空或 null,我将列表长度设置为零,而不是设置单个空值。


@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 );

        }

    }

}


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信