FCL打开中间列第二页时第一页实体调用被覆盖及参数问题咨询
SAP UI5双列布局页面导航数据加载问题解答
问题背景
Object页面[ProgramDetails page]默认加载时会发起实体调用。从该页面导航至双列布局的另一页面后,两个页面均会重新加载数据并发起必要调用,但对象页面的实体调用被覆盖,无法传递正确参数。
问题1:是否可限制重新加载,为第一页使用同一会话?
可以通过以下配置实现:
- 确保双列布局的两个页面共享同一OData模型实例,避免重复初始化模型导致上下文丢失
- 在
manifest.json的路由定义中,为双列布局的主页面设置"preservePageInSplitContainer": true,防止导航时销毁原页面控件,保留已加载的数据上下文 - 导航时调用
router.navTo传入{ preserveContext: true }参数,确保原页面绑定的上下文不被重置
问题2:是否可在实体调用URL中定义参数名称?
可以通过调整绑定配置或代码实现,生成(ID=xxx)格式的请求参数:
- Manifest绑定配置:在页面的绑定路径中显式指定键参数名称
"pages": { "ProgramDetails": { "entitySet": "Program", "bindingPath": "/Program(ID='{urlParameters>ID}')" } } - 代码手动发起请求:调用OData模型的
read方法时构造完整的实体路径const sProgramId = "b73c75c2-a52f-4948-914e-36a08f534b09"; this.getModel().read(`/Program(ID='${sProgramId}')`, { urlParameters: { "$select": "ID,description", "$expand": "DraftAdministrativeData($select=DraftIsCreatedByMe,DraftUUID),type($select=id,name)" }, success: (oData) => { // 处理返回数据 } }); - 控件级绑定调整:如果是控件绑定,确保绑定路径使用
(ID='{...}')格式,而非简写的({...})
只要后端OData服务兼容EntitySet(KeyName=KeyValue)的请求格式,前端配置后就能生成符合要求的URL。
内容的提问来源于stack exchange,提问作者Sindhu
相关产品推荐
相关产品推荐

