如何在ContactManager中为指定ABPerson子类型设置必填FirstName字段?
解决方案:仅指定ABPerson子类型的FirstName必填字段
在GlobalPersonNameInputSet.default.pcf的上下文里,无法直接引用contact作用域,得通过nameOwner对象关联到对应联系人实体来判断类型。以下是实现批量指定子类型并设置FirstName必填的具体方法:
代码实现
替换原有not nameOwner.isRequired(gw.api.name.NameOwnerFieldId.FIRSTNAME)的逻辑为:
// 获取当前名称所属的联系人实体 def contact = nameOwner.getOwner() as gw.entity.Contact // 判断是否为目标子类型之一 if (contact != null && contact.typeis (ABAdjudicator, ABPersonVendor, ABAttorney, ABDoctor)) { // 移除FirstName的必填豁免,强制设为必填 return false } // 其他类型保持原有必填规则 return not nameOwner.isRequired(gw.api.name.NameOwnerFieldId.FIRSTNAME)
关键说明
nameOwner.getOwner():获取当前姓名输入框所属的主实体,转型为gw.entity.Contact确保我们操作的是联系人对象contact.typeis (类型列表):支持批量判断多个子类型,只要联系人属于其中任意一种,就触发必填规则- 返回
false:表示不豁免FirstName的必填要求(即该字段必须填写);其他类型继续沿用原有逻辑
注意事项
- 确保类型名称拼写准确(比如
AbAttorney要修正为ABAttorney,保持与系统内定义一致) - 增加
contact != null判断避免空指针异常,防止非联系人实体的场景报错
内容的提问来源于stack exchange,提问作者Matt Campbell
相关产品推荐
相关产品推荐

