簡體   English   中英

Spring LDAP對象目錄映射器注釋缺少屬性

[英]Missing attributes with Spring LDAP object-directory mapper annotations

我正在嘗試使用Spring LDAP的對象目錄映射將對象寫入LDAP服務器。 該對象用@Entity注釋,幾個字段用@Attribute注釋。

只要填充了所有帶注釋的字段,一切都將起作用。 但是,如果某個字段的值(例如myattribute )為null或為空字符串,則LdapTemplatecreateupdate方法將引發錯誤。 服務器拒絕該操作,並且針對屬性“ myattribute”的投訴“屬性值”在語法上不正確”

LDAP模式允許丟失“ myattribute”(它是相關對象類的“ may”屬性),但是如果存在,則不允許為空(它具有Directory String語法)。 我無法更改架構。

當對應的POJO字段為null或為空時,是否有某種方法可以使Spring LDAP省略“ myattribute”,而不是嘗試使用空白值創建屬性?

我找到了一個解決方案,對於我的應用程序來說,它可能不是最優雅的,但是它可以工作。 不要將Java字段聲明為String類型,而是將其聲明為List類型。 然后,在設置器中,如果該值為空或為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 );
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM