我正在为特定角色配置编写返回声明 -
如果一切都在范围内,则应返回 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("护士"); }
但这导致了解析错误并且看起来从来都不正确。
感谢您提供的任何帮助!
您可以在包含检查之前将空检查添加到现有条件。您还需要在第一个条件后添加缺少的右括号。完整的 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");