首页 > 解决方案 > sapui5 odata 在提交更改错误后恢复模型

问题描述

我已经显示了一个项目列表(聚合绑定)和每个项目的编辑按钮来编辑项目的值。编辑按钮打开一个弹出窗口,我可以在其中更改值。

我正在使用双向绑定,并在编辑弹出窗口中的值并按下弹出“确定”按钮后调用 submitChanges()。

submitChanges 有两个回调——成功和错误。现在,当来自后端的错误(例如,另一个用户当前正在编辑项目)时,我可以处理并显示错误消息。并且数据在后端没有改变。然而,尽管出现错误,模型本身(在前端)还是发生了变化。

这是必须由 OData 服务本身处理的事情吗?还是我应该在前端做点什么?调用 resetChanges() 没有帮助 - 在 submitChanges 之后没有要还原的更改。

有什么例子或最佳实践吗?

标签: odatasapui5sap-web-ideweb-ide

解决方案


如果submitChanges不成功并且您进入错误处理程序,则数据将保留在前端的“已编辑”表单中(因此您可以尝试再次提交)。

由您的前端逻辑决定要做什么:

  • 默认是继续编辑,稍后再提交
  • 一个常见的替代方法是resetChanges(在不成功之后有 !! 更改submitChanges),然后oModel.refresh从后端重新获取新副本,以便用户可以再次开始编辑

而且 - 当然,您可以为用户提供选择 - 重置所有内容并从后端获取新副本 - 或者每行中的重置按钮可以单独重置单个项目。


推荐阅读