2010-09-27 41 views
0

我試圖在LDAP服務器中搜索具有一些配置文件的所有用戶。到目前爲止,我可以通過個人資料獲取所有用戶,但我無法對多個角色進行相同操作。所以,下面的代碼工作具有多個參數的DirContext搜索陣列

[...] 
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不起作用。我究竟做錯了什麼?

+0

對不起,我很新在這個論壇上,我不知道你可以給的答案。會做。謝謝(你的)信息! – 2010-09-27 22:22:44

回答

0

對象數組只能包含字符串或字節數組的列表。其餘的將被轉換爲字符串。在第二個例子中,第一個對象是字符串數組。數組引用很可能會轉換爲字符串,並且將從中進行過濾。

看一看的API,它說,這既不是字符串也不是一個byte []通過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); 
+0

我在逃避,但似乎沒有其他辦法。感謝您的幫助! – 2010-10-05 16:32:36