查询 String jobTitle 时在 .contains 方法上调用 nullPointer

问题描述 投票:0回答:1

我正在为特定角色配置编写返回声明 -

如果一切都在范围内,则应返回 true 并分配角色。

部分逻辑需要用户

identity.getAttribute("jobTitle")**.contains("Nurse");**

例如,这里有3行Java赋值逻辑-

return "ACTIVE".equalsIgnoreCase(identity.getAttribute("status")
 && !"attributeString1".equalsIgnoreCase(identity.getAttribute("company")) 
 && !"attributeString2".equalsIgnoreCase(identity.getAttribute("jobTitle"))
 && identity.getAttribute("jobTitle").contains("Nurse");

当我对环境中的所有身份多维数据集运行系统范围刷新时,.contains 方法将调用“尝试调用包含空值 BSF 信息的方法:RuleTest at line: 0 column: columnNo”,我只能假设是它找到了一个带有 null jobTitle 的 Identity Cube 并出错了。

我想问你们的问题:有没有一种方法可以在不破坏我的逻辑的情况下为 jobTitle 添加空检查?

可能根本不正确 - 但我尝试在 && 之后输入 if 语句,如下所示:

&& if(identity.getAttribute("jobTitle") != null) { Identity.getAttribute("jobTitle").contains("护士"); }

但这导致了解析错误并且看起来从来都不正确。

感谢您提供的任何帮助!

java roles rules provisioning sailpoint
1个回答
0
投票

您可以在包含检查之前将空检查添加到现有条件。您还需要在第一个条件后添加缺少的右括号。完整的 return 语句最终可能如下所示:

return "ACTIVE".equalsIgnoreCase(identity.getAttribute("status"))
   && !"attributeString1".equalsIgnoreCase(identity.getAttribute("company")) 
   && !"attributeString2".equalsIgnoreCase(identity.getAttribute("jobTitle"))
   && identity.getAttribute("jobTitle") != null
   && identity.getAttribute("jobTitle").contains("Nurse");
© www.soinside.com 2019 - 2024. All rights reserved.