Spring Ldap:如果不存在则查找dn而不抛出异常

Sea*_*oyd 1 java spring ldap spring-ldap

在Spring LDAP中使用LdapTemplate,我有这样的代码:

Object object=null;
try{
    String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
    object = this.ldapTemplate.lookup(dn);
} catch(final NameNotFoundException e){
    // create Object
}
Run Code Online (Sandbox Code Playgroud)

但是因为我读过我的Joshua Bloch,我知道不应该将异常用于控制流程.有没有办法查找一个dn,看看它是否存在而不抛出异常,如果不存在?一定有,但我找不到.我正在寻找像这样(或类似)的代码:

String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
Object object=this.ldapTemplate.someMethod(dn);
if(object==null){
    // create Object
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

BTW:只是看看JavaDoc无济于事.抛出的方法都没有NameNotFoundException在JavaDocs中说明.

Mat*_*all 7

lookup()只有当您确定DN存在时才应该使用该方法.这通常是因为您先前已搜索并找到了一个用户或组,并缓存了从服务器返回的DN.

如果您正在寻找可能存在或可能不存在的内容,请使用正确的API ldapTemplate.search(),并使用适当的过滤器.这将返回结果列表,如果未找到任何结果,则返回空列表而不是抛出异常.

  • 帮助我太晚了,但+1因为它可能会帮助下一个需要这个的用户.谢谢! (2认同)