關於 SAP UI5 MessageProcessor 消息創建的問題 Message Model OData V2 Messages

我們在單步調試 SAP UI5 OData 模型或者 JSON 模型初始化代碼時,都會發現 sap.ui.model.Model 構造函數調用了其基類 MessageProcessor 的構造函數,如下圖所示:

MessageProcessor 是 SAP UI5 統一存儲和管理各種類型的 Message 的實現類之一。

以下是在 SAP UI5 裏手動創建消息或擴展框架提供的消息傳遞功能的一些方法:

  • 可以通過中央 sap.ui.core.message.MessageManager API 手動創建自定義消息。 對於這些手動創建的消息,應用程序必須確保適當的消息生命週期。

  • 對於自定義目標格式,可以使用自定義消息處理器。 自己的消息處理器要繼承類sap.ui.core.message.MessageProcessor。

  • 如果使用的後端以特殊方式提供消息,可以使用自己的sap.ui.core.message.MessageParser 實現。

Message Model

通過調用 getMessageModel() 方法從消息管理器中檢索消息模型。可以直接在應用程序中使用它,也可以將它用作參考實現。

可以像使用任何其他模型一樣使用消息模型將聚合綁定到根路徑(/),例如列表中的項目,並添加過濾器和排序器。 /集合中的每個項目都代表一個 sap.ui.core.message.Message 對象,因此可以綁定到爲此類對象指定的所有屬性。 MessagePopover 控件用於向用戶顯示消息。

示例代碼如下:

// "Button" required from "sap/m/Button"
// "MessagePopover" required from "sap/m/MessagePopover"
// "MessagePopoverItem" required from "sap/m/MessagePopoverItem"

var oMessagePopoverButton = new Button({
    text: "Show MessagePopover",
    type: "Accept",
    press: function() {
        oMP.openBy(this);
    }
});

var oMP = new MessagePopover({
    items: {
        path:"message>/",
        template: new MessagePopoverItem({ description: "{message>description}", type: "{message>type}", title: "{message>message}"})
    }
});

oMP.setModel(sap.ui.getCore().getMessageManager().getMessageModel(),"message");

oMessagePopoverButton.placeAt("content");

OData V2 Messages

OData V2 消息要麼由 sap.ui.model.odata.ODataMessageParser 自動創建並由 sap.ui.model.odata.v2.ODataModel 處理,要麼可以由應用程序手動創建。

這些消息的目標可以爲空。 在這種情況下,消息沒有特定目標並且與整個應用程序相關。如果設置了目標,則它必須對應於綁定路徑,然後使用該路徑將消息傳播到相應的綁定。如果這些綁定屬於實現 refreshDataState 函數的控件,則該控件能夠對數據狀態更改做出反應。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章