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: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: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 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 name=$rs.name /> ====>先存運算式在map中,取值時才即時運算,可以配合for作業;運算式型態和var一樣 <#varx #name=$cls.getRowValues() /> ====>把變數設到根map中,而不是varx map中, 主要用來設array的名稱,方便讀取
<#include "user_inc.htm"/> ====>隱含另一個html樣版檔, 沒指定路徑, 以同路徑為主,"/"可有,可無
<## 繁體文字 ${變數}/> ====>自動轉簡體, 轉換後為樣版文字,重parse變數; "/"可有,可無 <## 繁體文字 || 簡體文字/> ====>如果簡簡文詞差別很大,可以用||分隔再自定