變數預設:#set ($valok = "hello foxdevelop")
變數邊界 ${} 與 . 存取差異解析
| 程式碼 | 渲染結果 | 原理說明 |
|---|---|---|
$valok | hello foxdevelop | 基礎變數輸出 |
$valok.com | hello foxdevelop.com | Velocity 嘗試呼叫 valok 物件的 cn 屬性/方法;字串沒有 cn 方法,直接輸出變數加上後綴 |
${valok}.com | hello foxdevelop.com | {} 鎖定變數邊界,變數 valok 渲染完畢後再拼接文字 .com(推薦拼接寫法) |
$!valok.com | hellofoxdevelop.com | $! 靜默引用:變數存在時等同 $valok;變數不存在輸出空字串,不會直接顯示 $xxx |
${valok.com} | 空白 | 嘗試讀取 valok.com 屬性,字串沒有 com 方法或屬性,視為變數不存在;要輸出空值請寫 $!{valok.com} |
${valok}.cn ✅ 變數 + 後綴拼接${valok.cn} ❌ 存取物件 valok 底下的 cn 屬性
單引號 / 雙引號 & 變數黏連
| 程式碼 | 渲染結果 | 原理說明 |
|---|---|---|
what$valok | whathello foxdevelop | 直接拼接,Velocity 自動辨識變數邊界 |
what$"valok" | what$”valok” | ❌語法錯誤,$ 後面不能緊接引號,無法解析變數 |
what"$valok" | what”hello foxdevelop“ | 引號僅為普通文字,模板內引號不會觸發字串解析,變數正常渲染 |
what'$valok' | what’hello foxdevelop‘ | 同上,單引號屬於一般文字字元 |
$valokwhat | $valokwhat | ❌無法辨識變數!Velocity 將 valokwhat 視為完整變數名稱,找不到就直接輸出原始文字 |
${valok}what | hello foxdevelopwhat | ✅大括號鎖定邊界,解決變數與文字黏連問題 |
總結
- 變數與文字黏連務必使用
${變數名}
錯誤:$valokwhat;正確:${valok}what - 拼接後綴文字:
${valok}.cn不要寫成${valok.cn} $!變數靜默引用:變數不存在時輸出空白,不會印出$xxx- 模板 HTML 裡的單/雙引號只是普通字元;只有 #set 賦值內部才會區分單引號(不解析變數)、雙引號(解析變數)
#set($a = "$valok") // 雙引號:解析變數,a=hello bamn
#set($a = '$valok') // 單引號:不解析變數,a=$valokCode language: PHP (php)
變數邊界補充說明