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

Java 具有多个参数的DirContext搜索数组,java,search,parameters,ldap,Java,Search,Parameters,Ldap,我试图在LDAP服务器中搜索所有具有某些配置文件的用户。到目前为止,我能够用一个配置文件获取所有用户,但我无法用多个角色实现同样的功能。所以下面的代码是有效的 [...] filterExpr = "(&(objectclass=person)(memberOf={0}))"; String rol = "myRol"; Object parameters[] ={rol}; context.search(distinguishedName, filterExpr, parameters

我试图在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,它也不起作用。我做错了什么?

对象数组只能包含字符串列表或字节数组。其余的else将转换为字符串。在第二个示例中,第一个对象是字符串数组。最有可能的是,数组引用将转换为字符串,并从中生成过滤器

看看api,上面说

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

您的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);

对象数组只能包含字符串列表或字节数组。其余的else将转换为字符串。在第二个示例中,第一个对象是字符串数组。最有可能的是,数组引用将转换为字符串,并从中生成过滤器

看看api,上面说

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

您的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);

对不起,我是这个论坛的新手,我不知道你能给答案打分。行。谢谢你的信息!对不起,我是这个论坛的新手,我不知道你能给答案打分。行。谢谢你的信息!我很想避免这种情况,但似乎没有其他办法。谢谢你的帮助!我很想避免这种情况,但似乎没有其他办法。谢谢你的帮助!