Hello,
you can attach two event to your model, and response can be parsed and message text from response can be shown to user. and in your case request failed event will be triggered.
oModel.attachMetadataFailed(function(oEvent) { var oParams = oEvent.getParameters(); this._showRquestError(oParams.response); }, this);
oModel.attachRequestFailed(function(oEvent) {
var oParams = oEvent.getParameters();
this._showRquestError(oParams.response);
}, this); _showRquestError: function(sDetails) { var oErrorDetails = this._parseError(sDetails); var sMsgText = oErrorDetails.sMessage; var sDetails = oErrorDetails.sDetails; // show message box with above message text and details }, _parseError: function(oParameter) { var sMsgText = "", sResponseText = "", oError = {}; sResponseText = oParameter.responseText; // can check for particular status code using oParameter.statusCode i.e. 500 // extract message text from sResponseText, for example as below var oJsonError = JSON.parse(sResponseText);sMsgText = oJsonError.error.message.value; //message text from response
oError.sDetails = sResponseText; oError.sMessage = sMsgText; return oError; }Hope this will be helpful.
Regards,
Akhilesh
oModel.read(..{success:fn,error:fn})
did u use those callback function? error function should get called in your case.
The solution provided by Akilesh does work. I only had to change the Message Parsing.
I implemented in the ViewController onInit-event the following:
var oDataModel = this.getOwnerComponent().getModel(); //default ODATA-Service oDataModel.attachMetadataFailed(function(oEvent) { var sStatusCode = oEvent.getParameter("statusCode"); var sStatusText = oEvent.getParameter("statusText"); var sStatusMessage = oEvent.getParameter("message"); var sMessage = sStatusText + " " + sStatusCode + " : " + sStatusMessage; sap.m.MessageBox.show( sMessage, sap.m.MessageBox.Icon.ERROR, "Error" ); }, this); oDataModel.attachRequestFailed(function(oEvent) { var sStatusCode = oEvent.getParameter("statusCode"); var sStatusText = oEvent.getParameter("statusText"); var sStatusMessage = oEvent.getParameter("message"); var sMessage = sStatusText + " " + sStatusCode + " : " + sStatusMessage; sap.m.MessageBox.show( sMessage, sap.m.MessageBox.Icon.ERROR, "Error" ); }, this);
I also tried to bring it into onInit of the BaseController (super-Class of View Controller), but this seems not work or I missed something.
Thanks!
michael
Add comment