具有多个参数的DirContext搜索数组

时间:2010-09-27 20:26:53

标签: java search parameters ldap

我正在尝试在LDAP服务器中搜索具有某些配置文件的所有用户。到目前为止,我能够让所有用户都拥有个人资料,但我无法对多个角色做同样的事情。所以下面的代码工作

[...]
filterExpr = "(&(objectclass=person)(memberOf={0}))";
String rol = "myRol";
Object parameters[] ={rol};
context.search(distinguishedName, filterExpr, parameters, controls);

但以下代码不是

filterExpr = "(&(objectclass=person)(memberOf={0}))";
String rol = "myRol";
String roles[] = {rol};
Object parameters[] ={roles};
context.search(distinguishedName, filterExpr, parameters, controls);

如果数组中有多个rol,它也不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

对象数组只能包含字符串列表或字节数组。剩余的其他内容将转换为字符串。在第二个示例中,第一个对象是字符串数组。最有可能的是,数组引用将转换为字符串,并且将使用过滤器进行过滤。

看看api,它说,

“既不是String也不是byte []的对象通过Object.toString()转换为字符串形式,然后应用String规则。”

你的ldap查询应该是,

filterExpr = "(&(objectclass=person)(|(memberOf={0})(memberOf={1})(memberOf={2})))";
String rol1 = "myRol1";
String rol2 = "myRol2";
String rol3 = "myRol3";
Object parameters[] ={rol1, rol2, rol3);
context.search(distinguishedName, filterExpr, parameters, controls);