2010-02-15 110 views
2

我在使用ldap搜索过滤器时遇到问题。 我想搜索根节点的所有子节点。我想要电子邮件用户名包含查询字符串的用户。 例如,如果我有使用java的ldap搜索筛选器

与搜索查询是 “LC” 我只想[email protected] .com

下面的代码令人惊讶地返回第一个和第二个。

String query = "..."; 
DirContext dc = ...; 
NamingEnumeration<SearchResult> ne = dc.search(root, 
    "(email=*{0}*@*)", 
    new Object[] { query }, null); 

查询过滤器"*...*@*"有什么问题?

回答

1

我不能给你一个完整的答案,但是如果你从命令行尝试ldapsearch与过滤器"(email=*l.c*@*)",你应该得到正确的记录...所以我会说这个问题是在Java方法,而不是在过滤。

希望它能帮助你。

+0

不幸的是ATM我没有Linux机器w/ldapsearch安装。 我唯一拥有的ldap管理器是JXplorer,它返回所有记录,而不仅仅是正确的。 AFAIK它是用java编写的,所以我不知道它是我还是java。 –

0

我假设你忘了粘贴格式化你的查询和它的{0}参数的代码? 编辑:哇,忘了我,我甚至不知道采用filterArgs数组的方法。

作为一个方面说明,在为inetOrgPerson电子邮件地址标准的属性是“邮件”而不是“电子邮件”(但也可能是不同的你的课程的情况下)