DirContext поисковый массив с несколькими параметрами - PullRequest
1 голос
/ 28 сентября 2010

Я пытаюсь найти на сервере 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 Ответ

1 голос
/ 04 октября 2010

Массив объектов может содержать только список строк или массив байтов.Остальное будет преобразовано в строку.Во втором примере первый объект - это массив строк.Скорее всего, ссылка на массив будет преобразована в строку, и из нее будет сделан фильтр.

Посмотрите на API, он говорит,

"Объекты, которые не являются ни строковыми, ни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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...