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

SAP Fiori Elements对话框按钮标签为空,如何传递父表单上下文?

解决SAP Fiori Elements自定义Action对话框上下文传递与按钮标签问题

问题核心

自定义Action触发的对话框无法继承父表单绑定上下文,导致对话框按钮标签为空,无法访问父实体字段值。根源在于当前Action使用批量实体绑定参数_it,不适合单个实体实例的操作场景。

解决方案步骤

1. 修改CDS中Action的绑定参数

将批量绑定_it改为单个实体绑定_this,确保Action关联单个实体上下文:

entity myEntity as projection on internalEntities.myEntity
        actions {
            @(
                cds.odata.bindingparameter.name: '_this', // 切换为单个实体绑定
                Common.SideEffects             : {TargetProperties: [
                    '_this/possibleActions',
                    '_this/processLogEntries'
                ]}
            )
            action processAction1(reasonText : String  @mandatory @title : '{i18n>action.dialog.reason.label}');
 }

2. 调整UI注解配置

添加InvocationGrouping属性,明确Action调用时携带当前实体上下文:

{
    $Type        : 'UI.DataFieldForAction',
    Action       : 'my.service.processAction1',
    Label        : '{someAggregation/actionName}',
    InvocationGrouping : 'ChangeSet' // 确保上下文传递到对话框
}

3. 控制器扩展兜底方案(若上述调整未生效)

通过扩展控制器手动将父上下文绑定到对话框按钮:

sap.ui.define(["sap/ui/core/mvc/ControllerExtension"], function(ControllerExtension) {
    return ControllerExtension.extend("my.extension.Controller", {
        override: {
            onBeforeRendering: function() {
                this.base.onBeforeRendering.apply(this, arguments);
                // 获取自动生成的对话框实例
                const oDialog = this.getView().byId("processAction1Dialog");
                if (oDialog) {
                    // 获取父表单的绑定上下文
                    const oParentContext = this.getView().getBindingContext();
                    // 绑定确认按钮文本到父实体字段
                    oDialog.getBeginButton().bindProperty("text", {
                        path: "someAggregation/actionName",
                        context: oParentContext
                    });
                }
            }
        }
    });
});

关键说明

  • _it用于多选批量操作,单个实体操作必须用_this才能传递上下文。
  • InvocationGrouping: 'ChangeSet'确保Action调用时携带当前实体的上下文信息。
  • 自动生成的对话框ID规则为[Action名称]Dialog,可通过UI调试工具确认实际ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:44:56