我们在单步执行SAPUI5OData模型或者JSON模型初始化代码的时候,会发现sap.ui.model.Model的构造函数调用了它的基类MessageProcessor的构造函数,如下图所示:MessageProcessor是SAPUI5统一存储和管理各类Message的实现类之一。以下是在SAPUI5中手动创建消息或扩展框架提供的消息传递功能的一些方法:可以通过中央sap.ui.core.message.MessageManagerAPI手动创建自定义消息。对于这些手动创建的消息,应用程序必须确保适当的消息生命周期。对于自定义目标格式,可以使用自定义消息处理程序。您自己的消息处理器应该继承sap.ui.core.message.MessageProcessor类。如果使用的后端以特殊方式提供消息,您可以使用自己的sap.ui.core.message.MessageParser实现。消息模型通过调用getMessageModel()方法从消息管理器中检索消息模型。您可以直接在您的应用程序中使用它或将其用作参考实现。消息模型可以像任何其他模型一样用于将聚合绑定到根路径(/),例如列表中的项目,并添加过滤器和排序器。/collection中的每个项目都代表一个sap.ui.core.message.Message对象,因此可以绑定到为此类对象指定的所有属性。MessagePopover控件用于向用户显示消息。示例代码如下://"Button"requiredfrom"sap/m/Button"//"MessagePopover"requiredfrom"sap/m/MessagePopover"//"MessagePopoverItem"requiredfrom"sap/m/MessagePopoverItem"varoMessagePopoverButton=newButton({text:"ShowMessagePopover",type:"Accept",press:function(){oMP.openBy(this);}});varoMP=newMessagePopover({items:{path:"消息>/",template:newMessagePopoverItem({description:"{message>description}",type:"{message>type}",title:"{message>message}"})}});oMP.setModel(sap.ui.getCore().getMessageManager().getMessageModel(),"message");oMessagePopoverButton.placeAt("content");ODataV2MessagesODataV2消息由sap.ui.model自动创建。odata.ODataMessageParser并由sap.ui提供。model.odata.v2.ODataModel句柄,或者可以由应用程序手动创建。这些消息的目的地可以为空。在这种情况下,消息没有特定的目标并且与整个应用程序相关。如果设置了目标,则它必须对应于绑定路径,然后用于将消息传播到相应的绑定。如果这些绑定属于实现refreshDataState函数的控件,则该控件能够对数据状态更改做出反应。
