WebPart中使用Nvelocity模板引擎來進行呈現

      NVelocity是一套強大的模板引擎,在我之前的隨筆中,有過使用它來呈現頁面及生成靜態頁的例子。通過使用它,我們可以達到界面與數據的完成分離(當然需要一些設計手段來支持)。
     我在公司裏的工作主要就是在office sharepoint2007的基礎上進行一些類型信息系統的門戶站點開發。而我所在的組開發出了一套通用的組件庫,比如類似163新聞的列表新聞部件、FLASH新聞部件等webpart.目的就在於每建設一個網站時,可以使用這些通用的組件庫來進行快速的開發,甚至於我們只需要拖拉+設計css樣式就可以完成一個站點的開發。但是,在不斷的開發新網站過程中,發現雖然通過更改css樣式可以達到控制webpart的呈現樣式。

      但是,還是有些需求是無法通過更改css來實現的。當然,這僅僅是對需求的不滿足,而我引入模板引擎的另一個想法是:

在指定的目錄下,針對每一個webpart都創建它的相應文件夾,在這個文件夾下可以放置多個模板及一個描述模板信息的xml文件。這樣,在頁面上使用webpart的時候,我們就可以遍歷這個模板文件夾,並讀取模板信息,以供選擇。也就是說,我們可以通過這種方式來實現類似webpart換膚的功能(採用模板達到的功能肯定比換膚更強大了)。
     如果我們將模板文件夾建到_layouts目錄下,甚至還可以達到多個站點共用一套webpart模板。
--------------------------
針對這個設想,我對webpart應用nvelocity進行了簡單的測試:
Step1:創建webpart,並在其中輸出相關數據<需要引用NVelocity.dll,並using 相關的命名空間>

 Step2:創建模板文件 default.vm,並寫呈現邏輯:

 

Step3:查看的運行效果如下:


很顯然,在webpart中使用nvelocity是可行的,而且非常簡單。
接下來要做的事就是
1、實現在一個目錄下放置多個模板文件,
2、編寫xml文件來描述這些模板,
3、編寫一個editorpart來讀取這個目錄下的模板描述xml,並生成模板的列表,以供使用者選擇。
---
實際上,模板選擇的工作難點在於寫editorpart時的xml讀取和分析(實際上,這也並不難,畢竟是基礎知識的運用而已)
有了使用nvelocity的方法,再加上模板選擇的功能應該就容易多了。

 

========================================================================

測試:

       原理很簡單:在EditorPart中指定WebPart模板所在的文件夾(相對路徑),並通過輸入的文件夾路徑獲取該文件夾下的templates.xml(即模板描述文件)。
然後列出該模板描述文件中的模板列表供選擇。模板描述文件格式及內容如下(如果要在項目中應用,可能還需要作相應的更改):

 

在編寫EditorPart時,讀取這個xml文件並分析即可。
完成EditorPart的編寫後,就可以在webpart中進行應用了。
------------------------------------------
以下是我測試的相關截圖:
No1:EditorPart中選擇模板的效果:

No2:使用默認模板時的效果:

No3:使用“新的”模板時的效果:


可以看出,通過這種方式爲同一個webpart應用不同的模板十分方便。
尤其是在實現CSS樣式無法實現的佈局時或需要一些特殊功能時,您可以考慮這種實現方式。
----
相關源碼:/Files/McJeremy/NVelocityTestPart.rar
----
出處:http://www.cnblogs.com/mcjeremy

發佈了8 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章