在 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))
从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);