我的应用程序在LDAP服务器中搜索人员。
return ldapTemplate.search("", "(objectclass=person)", new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("cn").getAll();
}
});
它返回NamingEnumeration
对象的列表,其中包含向量。每个向量可以包含一个或多个值。我可以用这个代码打印人名
for(NamingEnumeration ne : list){
while (ne.hasMore()) {
System.out.println("name is : " + ne.next().toString());
}
}
由于我的ldap搜索可以包含多个值,因此NamingEnumeration
对象内部的向量。我如何从中获得多个值。
4条答案
按热度按时间r7knjye21#
当您使用
java.util.List
或javax.naming.NamingEnumeration<java.util.Vector>
时,您应该能够在每个
NamingEnumeration
中迭代Vector
:请注意,
Vector
被许多人认为是过时的,尽管没有被弃用。此外,封闭的集合可以使用类型参数。如果您有选择,请考虑以下选项之一:bf1o4zei2#
在使用Java5引入的
for
语法迭代列表时你不应该调用
hasMore()
如果你的list不支持Iterator接口,你需要使用旧的形式:
5ktev3wc3#
此代码片段将处理未知属性名称和单个或多个值(例如多个对象类):
使用spring-ldap 2.3.1和AttributesMapper实现:
在此示例代码中,searchResultList包含所有条目,每个条目都表示为属性的Map(具有一个或多个值):
现在,使用searchResultList看起来像这样:
2eafrhcq4#
NamingEnumeration扩展了Enumeration,因此您可以简单地使用Collections::list将Enumeration转换为List: