91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

發布時間:2021-12-03 10:59:03 來源:億速云 閱讀:135 作者:柒染 欄目:大數據

本篇文章為大家展示了SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

SAP官網的ABAP Programming Model for Fiori幫助文檔里,定義了很多注解(Annotation):

SAP Help Portal

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

對于這些注解,我們可以從其字面含義和SAP幫助文檔去掌握其用法和功能。

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

以@ObjectModel.readOnly為例,施加了這個注解的CDS view字段,在對應的Fiori UI上以只讀的方式渲染:

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

并且也不能通過編程的方式進行修改。

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

大家在使用這些注解的時候,有沒有想過,它們是怎么工作的?

以@ObjectModel.readOnly為例,現在就請跟著Jerry一起,去探索它的前后臺實現原理。

在Chrome開發者工具的UI5面板里,找到Posting Date這個控件對應的屬性,發現字段editable屬性值為false,這就是其在UI不能編輯的原因。

如果你的Chrome開發者工具沒有UI5這個標簽,請參考Jerry這篇文章,安裝Chrome for UI5的擴展:

[Jerry的Fiori原創文章合集]( Jerry的Fiori原創文章合集)

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

既然后臺模型是CDS view,那么前臺UI顯然基于Fiori Elements. 我想知道Posting Date這個控件的editable屬性是在什么時候被設置成false的。

在SmartField.setEditable函數里設置斷點,重新打開Fiori UI,點擊Edit進入編輯模型,斷點觸發,從調用棧能看出,有代碼調用SmartField.setEditable時,傳入的參數為false.

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

那么這個false如何計算出來的?順著當前的調用棧往外層查找,發現一個重要的函數:

AnnotationHelper.canUpdateProperty.

從函數名就能猜測出,這個函數負責計算一個控件的屬性是否允許更新(Update),工作的上下文就是注解(Annotation).

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

這個方法實現體的語義也很清楚,如果后臺模型字段sap:updatable設置為false,則canUpdateProperty函數調用返回false,導致SmartField.setEditable以參數false去渲染Fiori UI.

我們打開OData服務的metadata,發現posting date字段對應的sap:updatable果然為false.

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

至此Fiori UI的工作原理分析完畢。我們再來看后臺。我的CDS view里只添加了@ObjectModel.readOnly為true的注解,而非sap:updatable. 顯然,這二者存在一定的關聯關系。

在Jerry之前的文章  Jerry的CDS view自學系列 介紹過CDS view框架處理邏輯,有這么一段代碼:

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

第839行的IF判斷,如果OBJECTMODEL.READONLY為true,則read_only屬性為X.

而read_only屬性為true,會導致posting date字段的屬性集合內表里,新增一條read_only為X的記錄:

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

最后,在SADL框架的屬性檢測邏輯中,一旦發現字段屬性集合內表里存在read_only為X的屬性,則將lv_creatable和lv_updatable置為false.

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

而SADL框架計算出來的這兩個值為false的布爾變量,最后就會將sap:creatable和sap:updatable設置為false.

SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析

@ObjectModel.readOnly屬性的前后臺工作原理的神秘面紗,至此就揭開了,然而它只是SAP Fiori編程模型眾多注解的冰山一角。

上述內容就是SAP Fiori編程模型規范里如何進行@ObjectModel.readOnly工作原理解析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武宁县| 石城县| 山东省| 沽源县| 城口县| 青川县| 鹿邑县| 蒙山县| 萍乡市| 马公市| 渑池县| 山阴县| 卫辉市| 新竹市| 济南市| 伽师县| 临朐县| 荃湾区| 盐城市| 汨罗市| 乳源| 寿阳县| 千阳县| 滨海县| 团风县| 周至县| 于田县| 东乌| 疏勒县| 尖扎县| 西青区| 木兰县| 西宁市| 金沙县| 阳西县| 海安县| 青铜峡市| 天峨县| 衡阳市| 九江县| 鄂托克旗|