XMark HTML樣版標籤

E3有自訂一個XMark的樣版標籤, 以簡單快速轉譯樣版標籤為目標.
我們實作在網路商店HTML網頁中, 以下是各種標籤的工作說明.

變數運算式:

  ${user} = 讀取map的user值, map.get("user"); null時, 以空白替代.
  ${item.id} = 讀取item下的id值; item型態為 map,rs.
  ${item.getName()} = 取出item再執行方法,參數只分字串,跟數字, getName("123"), getName(123),
  ${#XLet.string(#XDate.getNow(),10)} = #表示內定工具類別,
  ${qty+5} = 讀取qty值後再+5
  ${name+"先生"} = 讀取name字串, 再加字串"先生"
  ${name & $home} = 第2個運算變數開始要加"$",第一個可加,可不加; 內定數字相加,字串要用&作相加
  ${array.length} = 取陣列長度,
  ${array.[ix]} = 配合for取值,

if 判斷式:

  <#if:id ($qty == 1234)> ... <#else> ... </#if>  ====>可以用"}","]" 替代">"; 用">"時條件要用()號; 運算式要用" "隔運算元,如"$qty == 123"
  <#if ($name == "ben" && $isAdmin)> ... </#if>  ====>多條件式只能用 && 或 || 一種, 複雜條件式可以用var,varx變數
  <#if> ... <#elseif> ... <#elseif> ... <#else> ... </#if>  ====>多層分配值條件式,
  <#if $isUser || true,false || 1,0 >  ... </#if>  ====>簡易boolean判斷式, 可用其中一種做運算,
  <#if (判斷式)? 真運算式 : 假運算式 />  ====>簡易if判斷式,運算式的{}字符改用[],內文字串等同一般樣版文字,如字串要"我的名字是$[name]",分隔也可用"::"
  <#if 判斷式[空白表示true]; var aaa=bbb; varx aaa=bbb; break:id; continue/>  ====>多指令寫法,true時先執行var指令,再執行continue(優先)或break,分隔也可以用";;"
  <#if 判斷式 break:id/>  ====>表示if底下都不執行; 有id時可以跳出多層; id可以指向for或if

for 判斷式:

  <#for:id $main(運算物件); start; 判斷式; add> ... </#for>  ====>一般用數字, 運算物件(rs,array,list..);起始數;判斷式;累加數,
  <#for $名稱;^> ... </#for>  ====>自動依序讀, 後面加";^"表示逆排, 可以為XRowSet,String[],Object[],ArrayList,用ary.[$ix_ary]取值
  <#if 條件 break:id/>  ====>只能for一層,有id可以跳多層,包含if,
  <#if 條件 continue/>  ====>只能for一層
範例:
  <#for $ary;0;$ix_ary < $ary.length; 1> 我說:[${ary.[ix]}], </#for>  ====>array順向讀取,陣列的length,index是常數變數
  <#for (ary; $ary.length-1; $ix_ary >= 0; -1)> 我說[${ary.[ix]}], </#for>  ====>array逆向讀取,用ary.[ix]取值
  <#for ($ary; 0; $ix_ary < $ary.length; 1)> ${ary.[$ix_ary]}  </#for>  ====>用ary.[$ix_ary]取值
  <#for $rs;^> 工作是..${rs.name} </#for>  ====>rs簡易讀法,加";^"表示逆排
  <#for $ary> 工作是..${ary.[ix]} </#for>  ====>array簡易讀法

var 自定靜態變數:

  <#var name="123" />  ====>設定變數 $var.name 值為 "123".
  <#var time="現在是: "+$#XDate.getTime() />  ====>使用 $var.time
  <#var isAdmin=($name == "123" || $count > 1) />  ====>加()運算式 $var.isAdmin 值為 boolean值,多重判斷可用
  <#var #name="jason" />  ====>把變數設到根map中,而不是var map中, 主要用來設array的名稱,方便讀取.

varx 自定動態變數:

  <#varx name=$rs.name />  ====>先存運算式在map中,取值時才即時運算,可以配合for作業;運算式型態和var一樣
  <#varx #name=$cls.getRowValues() />  ====>把變數設到根map中,而不是varx map中, 主要用來設array的名稱,方便讀取

include 檔案:

  <#include "user_inc.htm"/>  ====>隱含另一個html樣版檔, 沒指定路徑, 以同路徑為主,"/"可有,可無

簡體字詞轉換:

  <## 繁體文字 ${變數}/>  ====>自動轉簡體, 轉換後為樣版文字,重parse變數; "/"可有,可無
  <## 繁體文字 || 簡體文字/>  ====>如果簡簡文詞差別很大,可以用||分隔再自定

相關文件