天天看點

WebX實踐指南_頁面模闆(二)VelocityWebX中的擴充

正如前面所講的,webx中view使用velocity模闆引擎來實作的。

velocity中語句都是#開頭的,變量的定義都是$開頭的 注釋代碼:## #* *# 模闆的引用: #include() #parse()
變量名規範:字母開頭,中間可以由下劃線、連接配接符或者數字組成 !的作用是,為空的時候輸出為空;如果不加velocity莫波引擎不會解析空的變量
對變量屬性的操作間接使用了對象的get/set方法

q: velocity模闆變量都是開頭的,如何輸出var這樣的字元?

a: 使用\轉義, #set(var="hello");$var=var,對應的$var=hello

q: 單引号雙引号差別?

a: 單引号裡的變量不會被解析。#literal() … #end可以用與一段代碼的中,這樣引擎也不會解析其中的内容。

foreach

if elseif else end

邏輯的與或非 ! && ||

stop

#stop 用于停止模闆解析

macro

定義宏 #macro(d) #end, 使用宏的時候 #d()

當然宏中可以傳遞參數 #macro(tablerows colorsomelist)

關于更多velocity的内容參照官網的介紹,這裡的說明基本上能滿足常見的業務處理,後續會針對velocity模闆的處理做專題的說明。

在實際的使用中,velocity文法都是嵌入到html/css/js檔案中,其作用主要是實作動态資料的渲染控制。例如,典型的table表處理時,對資料的渲染:

webx中能夠很好地支援velocity模闆引擎,同時添加了很多的服務支援,這裡主要介紹page服務和url服務 。在webx-component.xml檔案中有相關的配置:

這方面的資料比較少,後續用到的時候再補全

<code>$page的處理, web.xml page-tool用于處理$page對象</code>

常見的使用方法:

在示例程式中會看到:

這裡的$app1link是哪裡來的?又有啥作用?現在可以明确的是app1link這個變量肯定不是velocity模闆提供的,grep指令看一下,找到對應的代碼在uris.xml檔案中配置的。仔細看之後發現這裡實際上是使用了uribrokerservice。

web由有許多資源組成,比如html文檔,圖檔,視訊, css/javascript等。每一種資源都由一種叫做資源标示符(uri)的符号來定位。uri除了出現在web頁面上,對于程式員來說,有時也會将它作為字面值常量定義在程式當中。

這類靜态錄入的uri,在早期的系統開發過程中,的确讓程式員屢試不爽。但随着系統功能的不斷擴充,複雜性越來越高,靜态錄入uri使得整套系統變得難以擴充和維護。為了有效解決靜态錄入uri帶來的維護和擴充性問題,uribroker service應運而生。

uribroker service的特點是以統一的配置和動态渲染的方式來生成uri字元串。在系統重構或移植時,你隻需要修改uribroker service的統一配置檔案 ,無需修改一行代碼即可完成全系統uri的無縫遷移。urlbroker service從本質上,解決了uri移植性,擴充性差等問題,同時也簡化了開發人員的編碼工作量。

常見的使用方式如下: