Guidewire PCF:MenuItem属性及NewContactPopup返回值报错问题咨询
问题1:是否存在同时具备action属性和pickValue属性的Guidewire PCF MenuItem?
问题2:弹窗返回Contact类型值报错的解决
业务场景:NewContactPopup期望返回Contact类型的值,但DisbursementContactScreen中的工具栏按钮仅配置了action属性,未配置pickValue属性。当用户在DisbursementDetailDV.pcf中录入付款联系人详情并点击更新时,因缺少pickValue属性触发报错。
相关代码
DisbursementDetailDV.pcf
<RangeInput conversionExpression="PickedValue.Contact" editable="true" id="contactName_SP" label="DisplayKey.get("SP.TransactionApproval.Web.DisbursementDetailScreen.ContactName")" onPick="disbursement.markThisDisbursementToGivenContact_sp(PickedValue.Contact)" value="disbursement.Contact_SP" valueRange="disbursement.ContactNameValueRange_SP" valueType="entity.Contact" visible="useContacts_SP"> <PostOnChange onChange="disbursement.markThisDisbursementToGivenContact_sp(disbursement.Contact_SP)"/> <MenuItem action="NewAccountContactPopup.push((disbursement as AccountDisbursement).Account, Company)" id="NewAccountContactCompany_SP" label="DisplayKey.get("SP.TransactionApproval.Web.DisbursementDetailScreen.NewAccountContactCompany")"/> <MenuItem action="NewAccountContactPopup.push((disbursement as AccountDisbursement).Account, Company)" id="NewAccountContactPerson_SP" label="DisplayKey.get("SP.TransactionApproval.Web.DisbursementDetailScreen.NewAccountContactPerson")"/> </RangeInput>
ContactScreen.pcf
<Toolbar> <ToolbarButton action="duplicateContactsPopupNavigator.checkForDuplicatesOrUpdate(\ -&gt; CurrentLocation.commit())" id="UpdateButtonThatForcesCheckForDuplicates" label="DisplayKey.get("Button.Update")" visible="duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/> <EditButtons cancelVisible="true" pickValue="contact" updateVisible="not duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/> <ToolbarButton action="duplicateContactsPopupNavigator.pushFromCurrentLocationToDuplicateContactsPopup()" id="CheckForDuplicates" label="DisplayKey.get("Web.Contact.CheckForDuplicates")" visible="duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/> </Toolbar> <PanelRef def="AccountContactCV(contact)"/>
主弹窗期望返回Contact类型,但当前更新按钮无返回类型,请求解决该报错问题。
回答
问题1解答
是的,Guidewire PCF的MenuItem组件支持同时配置action和pickValue属性。当需要从弹窗选择或创建实体后返回值到父组件时,这两个属性常配合使用:
action用于触发弹窗导航逻辑(如调用Popup.push()方法)pickValue指定弹窗关闭时需返回的实体对象,供父组件的onPick方法接收并处理
问题2报错解决方案
报错核心原因:自定义的ToolbarButton(UpdateButtonThatForcesCheckForDuplicates)仅配置了action但未指定pickValue,导致弹窗无法将Contact实体返回给父组件的RangeInput。
修改步骤:
- 为自定义更新按钮添加
pickValue属性,指定返回的contact实体:
修改ContactScreen.pcf中的ToolbarButton配置:<ToolbarButton action="duplicateContactsPopupNavigator.checkForDuplicatesOrUpdate(\ -&gt; CurrentLocation.commit())" id="UpdateButtonThatForcesCheckForDuplicates" label="DisplayKey.get("Button.Update")" pickValue="contact" visible="duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/> - 验证弹窗返回逻辑:确保
checkForDuplicatesOrUpdate方法执行完成后,会关闭当前弹窗并将contact实体通过pickValue传递回去,父组件的RangeInput的onPick方法即可正确接收并更新disbursement.Contact_SP值。
额外优化建议
- 检查
NewAccountContactPopup的弹窗定义,确认其returnType配置为entity.Contact,确保支持实体值返回 - 验证
disbursement.markThisDisbursementToGivenContact_sp方法能正确处理传入的Contact实体参数
内容的提问来源于stack exchange,提问作者Sathwik69
相关产品推荐
相关产品推荐

