如果用户在DB中没有任何角色,则在检查用户角色时JAVA出错

时间:2015-02-01 00:27:11

标签: java xpages

我正在处理以查看当前用户是否具有特定角色。问题是用户有一个角色(即使它不是我正在检查的)一切都很好。但是,如果用户没有角色,则检查用户角色会抛出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。

3 个答案:

答案 0 :(得分:2)

尝试database.queryAccessRoles(userName) - 无论用户是否具有任何角色,或者(这可能是此处的问题)都是ACL中的命名条目,这都应该有效。

答案 1 :(得分:0)

  

不确定为什么捕获没有捕获错误......

因为你在catch块中的null对象上调用clear()。如果roles对象的赋值失败,它仍然为null,并且您无法在其上调用方法。

很少有改进建议:

  • 始终使用var作为变量
  • 不要吞下例外
  • 不要进行级联调用(特别是在出现问题时)

答案 2 :(得分:0)

我打赌你调用

时会发生NullPointerException
roles.clear();

当您尝试查询用户的角色时,会抛出哪种方法和异常。

尝试做:

if(roles!=null){
    roles.clear();
}

希望它有所帮助!