2015-09-25 210 views
0

嘗試使用用戶ID搜索用戶的詳細信息,EMAILID,名字,姓氏,GUID,等等......許多需要在今後的LDAP模板搜索屬性

添加多個值的搜索應該進行使用所有非空的屬性。 實測值這段代碼在線*

字符串過濾器= 「(&(SN = YOURNAME)(郵件= *))」;

* 是否有任何其他預定義模板或這樣做搜索,更優化的方式,而不直接指定值是零或使用,如果對每一個屬性else語句?必須將所有值傳遞給該方法,並且那些不爲空的值必須用於使用LDAP進行搜索。什麼?請幫忙。

回答

1

您可以在運行時有效地使用過濾器來指定要用於搜索的內容以及不依賴於某些規則或您對屬性的NULL驗證。 PLS發現其獲取在ldapTemplate使用過濾器人名示例代碼: -

public static final String BASE_DN = "dc=xxx,dc=yyy"; 
private LdapTemplate ldapTemplate ; 
public List getPersonNames() { 
    String cn = "phil more"; 
    String sn = "more"; 
    AndFilter filter = new AndFilter(); 
    filter.and(new EqualsFilter("objectclass", "person")); 
    filter.and(new EqualsFilter("sn", sn)); 
    filter.and(new WhitespaceWildcardsFilter("cn", cn)); 
    return ldapTemplate.search(
     BASE_DN, 
     filter.encode(), 
     new AttributesMapper() { 
      public Object mapFromAttributes(Attributes attrs) 
      throws NamingException { 
      return attrs.get("cn").get(); 
      } 
     }); 
} 

正如名字所暗示的AndFilters加入像EqualFilter查找該檢查屬性的平等而WhitespaceWildcardsFilter執行通配符搜索中使用的所有單獨的過濾器。因此,就像我們得到cn = phil更多,它反過來使用*phil*more*進行搜索。

+0

謝謝Avis ... AND過濾器正是我需要的 – NimmyKrish