[英]Missing attributes with Spring LDAP object-directory mapper annotations
我正在嘗試使用Spring LDAP的對象目錄映射將對象寫入LDAP服務器。 該對象用@Entity注釋,幾個字段用@Attribute注釋。
只要填充了所有帶注釋的字段,一切都將起作用。 但是,如果某個字段的值(例如myattribute )為null或為空字符串,則LdapTemplate的create和update方法將引發錯誤。 服務器拒絕該操作,並且針對屬性“ 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.