如何定位ctx.recipient下firstName等三个属性中发生值变更的具体字段
具体实现方案
你可以调整原有校验逻辑,逐个判断每个字段的变更情况,同时记录具体发生变更的字段名,修改后的代码参考如下:
<% // 初始化变量存储变更字段列表 var changedFields = []; // 逐个校验每个字段 if (ctx.recipient.@firstName != ctx.recipient.@firstName_init) { changedFields.push('firstName'); } if (ctx.recipient.@lastName != ctx.recipient.@lastName_init) { changedFields.push('lastName'); } // 修正原有代码漏写的@符号,和XML属性格式保持一致 if (ctx.recipient.@emailPreferredName != ctx.recipient.@emailPreferredName_init) { changedFields.push('emailPreferredName'); } // 存在变更则赋值标记,同时存储变更字段列表供后续逻辑调用 if (changedFields.length > 0) { document.controller.setValue('/ctx/vars/piiChanges', 1); document.controller.setValue('/ctx/vars/changedPiiFields', changedFields.join(',')); } %>
逻辑说明
- 新增
changedFields数组专门记录发生变更的字段名 - 将原有的多条件合并判断拆分为三个独立判断,每个字段匹配到变更时就将对应字段名加入数组
- 你提供的示例XML payload中三个字段均发生了变更,最终
/ctx/vars/changedPiiFields的值会是firstName,lastName,emailPreferredName,直接读取该变量即可获取所有变更的字段信息
内容的提问来源于stack exchange,提问作者David Garcia
相关产品推荐
相关产品推荐

