LDAP替换一个属性的列表值

时间:2013-01-18 12:25:53

标签: java ldap jndi

我有一个属性,例如telephonenumber,它出现在一个人身上好几次。现在我想用一个新数字列表替换所有数字:

<person>  
<telephonnumber>12345</telephonnumber>  
<telephonnumber>23456</telephonnumber>  
</person>  

替换为:

<person>  
<telephonnumber>56789</telephonnumber>  
<telephonnumber>78901</telephonnumber>  
</person>  

我怎样才能用Java做到这一点?

使用

mods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("telephonnumber", "56789")));  
mods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("telephonnumber", "78901")));  

最终将所有值替换为最后一个ModificationItem。好吧,我可以通过删除所有数字,并从列表中添加所有新值来解决。但我认为Java LDAP直接支持它。

1 个答案:

答案 0 :(得分:4)

您希望使用多值电话属性创建 替换。请参阅Oracle LDAP attributes tutorial

// Create a multivalued attribute that has four String values
BasicAttribute oc = new BasicAttribute("objectClass", "top");
oc.add("person");
oc.add("organizationalPerson");
oc.add("inetOrgPerson");

提示:在开始编码之前,首先通过LDIF文件尝试LDAP操作。