从LDAP条目(使用相同的名称)获取所有值,并将它们存储在LotusNotes和Java中

从LDAP条目(使用相同的名称)获取所有值,并将它们存储在LotusNotes和Java中,java,jndi,lotus-notes,Java,Jndi,Lotus Notes,我通过JNDI从LotusNotes中的代理从LDAP/AD检索帐户信息。那很好用。我的问题是具有相同名称的属性/值,例如,条目中存在多次可用的ObjectClass和ObjectType。我想用以下代码将这些值存储为LotusNotes中的多文本条目 for (NamingEnumeration ae = atts.getAll(); ae.hasMore();) { Attribute attr = (Attribute) ae.next(); Item mItem = n

我通过JNDI从LotusNotes中的代理从LDAP/AD检索帐户信息。那很好用。我的问题是具有相同名称的属性/值,例如,条目中存在多次可用的ObjectClass和ObjectType。我想用以下代码将这些值存储为LotusNotes中的多文本条目

for (NamingEnumeration ae = atts.getAll(); ae.hasMore();) {
    Attribute attr = (Attribute) ae.next();

    Item mItem = newDoc.getFirstItem(fPre + "_" + attr.getID());
    if(mItem == null){
        newDoc.replaceItemValue(fPre + "_" + attr.getID(), attr.get());
    }else{
        mItem.appendToTextList("" + attr.get());
    }
}
但我总是只得到一个值。那么,我是否以错误的方式访问LDAP/AD中的条目,或者Notes中的存储是否错误(不保存就无法访问条目,就像LotusScript一样)

谢谢
Armin

您的代码看起来是正确的。假设attr.get()多次返回相同的值,那么您应该从getFirstItem获得一个非空结果,并在第二次(第三次、第四次…)等时进入else子句。所以我的问题是:你在调试器中看到了吗?你真的看到它执行appendToTextList()方法了吗?假设attr.get()返回一个字符串,那么mItem.Type是否返回“TEXT”并定义为一个多值字段?我没有在Notes中运行java调试。但我把代码放在Netbeans的外部,并在那里尝试,看看我得到了什么。看起来我在LDAP中错了什么。如果我通过客户端查看LDAP,我会看到多个Objectclass条目(每个条目都有一个值),但是如果我运行代码,我总是只会看到一个条目(我会在控制台上打印每个值)。所以我认为这不是一个真正的笔记问题。