WebIDE CRUD模板和OData错误的问题

时间:2016-04-23 02:12:09

标签: sapui5

有没有人成功将应用程序基于WebIDE Fiori CRUD模板?它似乎无法正确处理批处理OData请求中的错误。

例如,当您在主列表中选择一个项目并单击“编辑”以更新它时,我输入一个我知道会在后端导致错误的值。即使内部更新失败,也会发送批处理OData请求并且响应成功(整体)。您在控制台中看到错误的请求400错误,但应用程序没有对它做出反应。

使用ErrorHandler.js对象,您可以轻松编写消息框代码以显示一条漂亮的错误消息,但是应用程序似乎感到困惑并始终导航到列表中的顶部项目,但ODataModel仍然有待处理的更改,所以如果你尝试导航它显示数据丢失对话框。

尝试调试它是非常痛苦的,因为Promises内部的Promises内部的Promises和回调在所有地方都会触发!

也许有一个更好的示例CRUD应用程序来建立您的应用程序?

2 个答案:

答案 0 :(得分:1)

嗯......还有一些调试,我发现Fiori CRUD模板出现的所有奇怪问题都是由于模型默认为更改后自动刷新。 这通常是一个很好的功能,因为用户无需点击刷新按钮即可查看添加新条目或编辑对象后所做的更改。

但是模型上的这种自动刷新似乎会对批处理模式下的更新造成严重破坏。 首先,如果批量更新完全成功,应用程序将导航到主列表中的第一个项目 - 这不应该。 其次,当一批奇怪的狗屎发生时出现错误。

所以要解决这个问题,我只需要在oModel.submitChanges()调用之前调用oModel.setRefreshAfterChange(false)(仅在更新时调用,而不是创建)。在保存完成后的回调中,我们将自动刷新重置为true。

crud app现在按预期工作,可以正确处理odata批量更新中的错误,而无需更新奇怪的ui。

答案 1 :(得分:0)

杰森,

但是他们提供的错误消息非常简单,并且不支持解析错误主体,如:

<code>005056A509B11ED199D882461C8C40FE</code><message xml:lang="en">The Data Services Request version '3.0' is not supported for the request payload.</message><

我们必须执行解析错误的代码,然后在消息框中显示