You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Guidewire PCF:MenuItem属性及NewContactPopup返回值报错问题咨询

Guidewire PCF MenuItem 属性与弹窗返回值报错问题

问题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(&quot;SP.TransactionApproval.Web.DisbursementDetailScreen.ContactName&quot;)"
    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(&quot;SP.TransactionApproval.Web.DisbursementDetailScreen.NewAccountContactCompany&quot;)"/>
    <MenuItem
      action="NewAccountContactPopup.push((disbursement as AccountDisbursement).Account, Company)"
      id="NewAccountContactPerson_SP"
      label="DisplayKey.get(&quot;SP.TransactionApproval.Web.DisbursementDetailScreen.NewAccountContactPerson&quot;)"/>
  </RangeInput>

ContactScreen.pcf

<Toolbar>
  <ToolbarButton
    action="duplicateContactsPopupNavigator.checkForDuplicatesOrUpdate(\ -&amp;gt; CurrentLocation.commit())"
    id="UpdateButtonThatForcesCheckForDuplicates"
    label="DisplayKey.get(&quot;Button.Update&quot;)"
    visible="duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/>
  <EditButtons
    cancelVisible="true"
    pickValue="contact"
    updateVisible="not duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/>
  <ToolbarButton
    action="duplicateContactsPopupNavigator.pushFromCurrentLocationToDuplicateContactsPopup()"
    id="CheckForDuplicates"
    label="DisplayKey.get(&quot;Web.Contact.CheckForDuplicates&quot;)"
    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。

修改步骤:

  1. 为自定义更新按钮添加pickValue属性,指定返回的contact实体:
    修改ContactScreen.pcf中的ToolbarButton配置:
    <ToolbarButton
      action="duplicateContactsPopupNavigator.checkForDuplicatesOrUpdate(\ -&amp;gt; CurrentLocation.commit())"
      id="UpdateButtonThatForcesCheckForDuplicates"
      label="DisplayKey.get(&quot;Button.Update&quot;)"
      pickValue="contact"
      visible="duplicateContactsPopupNavigator.ShowCheckForDuplicatesButton"/>
    
  2. 验证弹窗返回逻辑:确保checkForDuplicatesOrUpdate方法执行完成后,会关闭当前弹窗并将contact实体通过pickValue传递回去,父组件的RangeInput的onPick方法即可正确接收并更新disbursement.Contact_SP值。

额外优化建议

  • 检查NewAccountContactPopup的弹窗定义,确认其returnType配置为entity.Contact,确保支持实体值返回
  • 验证disbursement.markThisDisbursementToGivenContact_sp方法能正确处理传入的Contact实体参数

内容的提问来源于stack exchange,提问作者Sathwik69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:49:49