如何在SAPUI5中使用OData V4获取submitBatch的错误消息

问题描述 投票:0回答:1

在 SAPUI5 中使用 OData V4 服务的 SubmitBatch 创建新实体时,可以使用绑定上下文的 getMessages() 读取消息。但是,这不会返回任何技术消息。

例如,如果我尝试创建一个当前锁定在后端的实体,控制台将显示消息“未捕获(承诺中)错误:您目前无法编辑此实例”。目前已锁定。但 getMessages() 不会返回此错误。

我怎样才能收到这些类型的消息?

这是我用来创建实体的代码。

let bindingContext = this.getView().getBindingContext()
let path = "/Contract('" + bindingContext.getObject().Contract + "')"

this.oContext = oModel.bindContext( path, null, {
    $$updateGroupId: "cmpchange"
})

this.oContext.getBoundContext().setProperty("Contract", this.Contract)

    oModel.submitBatch("cmpchange").then(function(oEvent){
        let messages = this.oContext.getBoundContext().getMessages()
        if (messages.length > 0) {
            let oJSONModel = new JSONModel()
            oJSONModel.setData(messages)
            this.oMessageView.setModel(oJSONModel)
            this.oMessageDialog.open()
        } 
    }.bind(this))
odata sapui5
1个回答
0
投票

sapui5 documentation of submitBatch method

从submitBatch得到的Promise 如果不成功则抛出错误。 您必须向它传递第二个函数来处理错误。

oModel.submitBatch("cmpchange").then(
    function (oEvent) {
        let messages = this.oContext.getBoundContext().getMessages();
        if (messages.length > 0) {
            let oJSONModel = new JSONModel();
            oJSONModel.setData(messages);
            this.oMessageView.setModel(oJSONModel);
            this.oMessageDialog.open();
        }
    },
    function (oError) {
        // here you get the error in oError
    }
)
.bind(this);
© www.soinside.com 2019 - 2024. All rights reserved.