文档

Java™ 教程
隐藏目录
修改属性
路径:Java命名和目录接口
课程:命名和目录操作

修改属性

DirContext 接口包含了用于修改目录中对象的属性和属性值的方法。

使用修改列表

一种修改对象属性的方法是提供一个修改请求列表 ( ModificationItem). 每个 ModificationItem 包含一个数字常量,指示要进行的修改类型,以及描述要进行的修改的 Attribute。以下是三种修改类型:

修改按照它们在列表中出现的顺序进行应用。要么执行所有修改,要么都不执行。

下面的代码创建了一个修改列表。它将 "mail" 属性的值替换为 "geisel@wizards.com",向 "telephonenumber" 属性添加一个额外的值,并移除 "jpegphoto" 属性。

// 指定要进行的修改
ModificationItem[] mods = new ModificationItem[3];

// 用新值替换 "mail" 属性
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
    new BasicAttribute("mail", "geisel@wizards.com"));

// 向 "telephonenumber" 添加一个额外的值
mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE,
    new BasicAttribute("telephonenumber", "+1 555 555 5555"));

// 移除 "jpegphoto" 属性
mods[2] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE,
    new BasicAttribute("jpegphoto"));

Windows Active Directory: Active Directory 将 "telephonenumber" 定义为单值属性,与 RFC 2256 相反。要使此示例针对 Active Directory 正常工作,您必须使用除 "telephonenumber" 以外的属性,或将 DirContext.ADD_ATTRIBUTE 更改为 DirContext.REPLACE_ATTRIBUTE


创建修改列表后,您可以将其提供给 modifyAttributes() 方法,如下所示。

// 在指定对象上执行请求的修改
ctx.modifyAttributes(name, mods);

使用属性

另外,你也可以通过指定修改的类型和要应用修改的属性来进行修改。

例如,下面的代码将用orig中的属性替换与name相关联的属性:

ctx.modifyAttributes(name, DirContext.REPLACE_ATTRIBUTE, orig);

name的其他属性保持不变。

modifyAttributes()的这两种用法在示例程序中进行了演示。该程序使用修改列表修改属性,然后使用modifyAttributes()的第二种形式恢复原始属性。


上一页:读取属性
下一页:添加、替换绑定与属性