我正在处理以查看当前用户是否具有特定角色。问题是用户有一个角色(即使它不是我正在检查的)一切都很好。但是,如果用户没有角色,则检查用户角色会抛出NUllPointerException。代码是:
Database appDB = this.getAppDB();
if (appDB == null) {
if (debug) System.out.println("App DB is Null " );
}else{
if (debug) System.out.println("App DB is Not Null " );
}
try{
if (debug) System.out.println("WFS*** get roles");
roles = appDB.getACL().getEntry(fullUser).getRoles();
if (debug) System.out.println("Got User Roles " );
}catch(NotesException e){
roles.clear();
if (debug) System.out.println("User Roles Null " );
}
消息“WFS *** get roles”在日志中显示变量fullUser是正确的,因为它在appDB中具有角色时起作用。 不确定为什么catch没有捕获错误,以及为什么会出现错误而不仅仅是返回一个空Vector。
答案 0 :(得分:2)
尝试database.queryAccessRoles(userName)
- 无论用户是否具有任何角色,或者(这可能是此处的问题)都是ACL中的命名条目,这都应该有效。
答案 1 :(得分:0)
不确定为什么捕获没有捕获错误......
因为你在catch块中的null对象上调用clear()。如果roles
对象的赋值失败,它仍然为null,并且您无法在其上调用方法。
很少有改进建议:
var
作为变量答案 2 :(得分:0)
我打赌你调用
时会发生NullPointerExceptionroles.clear();
当您尝试查询用户的角色时,会抛出哪种方法和异常。
尝试做:
if(roles!=null){
roles.clear();
}
希望它有所帮助!