我想检索有关LDAP组数据。 因为我需要分页的结果,我需要运行范围查询。 我的设置使用JNDI连接到LDAP。 我试图运行此查询
(&(objectclass=group)(range=1-500))
我究竟做错了什么? 我知道有用于基于LDAP的范围查询,我怎么修改这个查询得到同样的?
我想检索有关LDAP组数据。 因为我需要分页的结果,我需要运行范围查询。 我的设置使用JNDI连接到LDAP。 我试图运行此查询
(&(objectclass=group)(range=1-500))
我究竟做错了什么? 我知道有用于基于LDAP的范围查询,我怎么修改这个查询得到同样的?
那么寻呼是一回事,范围是另一回事。 你页面,你从LDAP服务器回来时,有超过1000个项目(至少这是在Active Directory中的默认值)的结果。
MSDN有关于如何做到在.NET分页搜索的文章 ; 希望你能翻译,为您的环境。
范围是不同的东西 。 当你有一个多值属性(通常的使用范围member
具有大量价值-attribute为一组)。 所以你不能在查询范围。 你需要指定的范围内,当你访问多值属性(当时而不只是指定的member
在代码中访问您指定的属性值member;range=1-500
从该多值属性获得第500个值)。
相反,简单分页控制的,如果你的AD是2003或以上版本,你可以考虑使用虚拟列表视图控制。 虚拟列表视图提供先进的结果排序选项,让您在控制搜索结果集的子集更多的权力。
这就是你需要查询,得到的结果
int start = 0;
int step = 1500;
int finish = 1499;
boolean finished = false;
String range;
String returnedAtts[] = {"member;Range=" + range};
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = readableDirContext.search(searchDN, searchFilter, searchCtls);