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

如何将CAP应用的OData v4 Workspace数据绑定到SAPUI5 Simple Form?

CAP + OData v4 实现Workspace数据绑定到SAPUI5 Simple Form

1. 确认OData v4模型关键配置

确保你的OData v4模型初始化时包含autoExpandSelect: true,该参数会自动处理属性展开,避免手动指定$select参数,示例:

// 补充模型初始化的关键配置
this.getView().setModel(new sap.ui.model.odata.v4.ODataModel({
  serviceUrl: "/odata/v4/workspace/", // CAP项目暴露的OData服务根路径
  autoExpandSelect: true,
  synchronizationMode: "None" // 只读场景使用此模式即可
}), "workspaceModel");

2. 按钮点击事件加载目标数据

在搜索按钮的点击事件中,根据用户输入的Workspace代码发起OData读取请求,将返回的单条数据存入模型的本地路径(如/currentWorkspace):

onSearchWorkspace: function(oEvent) {
  const sWorkspaceCode = this.getView().byId("inputWorkspaceCode").getValue();
  if (!sWorkspaceCode) {
    sap.m.MessageToast.show("请输入Workspace代码");
    return;
  }
  const oModel = this.getView().getModel("workspaceModel");
  // 路径需匹配CAP定义的实体集和主键
  oModel.read("/Workspaces(Code='" + sWorkspaceCode + "')", {
    success: function(oData) {
      oModel.setProperty("/currentWorkspace", oData);
    },
    error: function(oError) {
      sap.m.MessageToast.show("未找到匹配的Workspace");
    }
  });
}

3. Simple Form绑定配置

修改Simple Form的XML代码,指定模型和绑定路径,直接将字段绑定到/currentWorkspace下的对应属性:

<sap.ui.layout.form.SimpleForm 
  id="workspaceForm"
  editable="false"
  layout="ResponsiveGridLayout"
  model="workspaceModel"
  path="/currentWorkspace">
  <sap.ui.layout.form.FormElement label="Workspace代码">
    <sap.m.Text text="{Code}" />
  </sap.ui.layout.form.FormElement>
  <sap.ui.layout.form.FormElement label="名称">
    <sap.m.Text text="{Name}" />
  </sap.ui.layout.form.FormElement>
  <sap.ui.layout.form.FormElement label="描述">
    <sap.m.Text text="{Description}" />
  </sap.ui.layout.form.FormElement>
  <!-- 其他需展示字段按此格式添加 -->
</sap.ui.layout.form.SimpleForm>

额外注意事项

  • 确保CAP的CDS定义中,Workspaces实体的主键为Code,否则需调整OData请求路径中的主键字段
  • 若需表单可编辑,将SimpleForm的editable设为true,并把Text控件替换为Input,同时将模型synchronizationMode改为Auto
  • 可在控制器初始化时给/currentWorkspace设置空对象,避免初始加载时绑定报错:this.getView().getModel("workspaceModel").setProperty("/currentWorkspace", {});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:55:29