2015-09-25 247 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