变量边界补充

变量预设:#set ($valok = "hello foxdevelop")

变量边界 ${}. 访问辨析

代码渲染结果原理说明
$valokhello foxdevelop基础变量输出
$valok.comhello foxdevelop.comVelocity尝试调用valok对象的cn属性/方法;字符串无cn方法,原样输出变量+后缀
${valok}.comhello foxdevelop.com{}锁定变量边界,变量valok渲染完成后拼接文字.com(推荐拼接写法)
$!valok.comhellofoxdevelop.com$!静默引用:变量存在等价$valok;变量不存在输出空字符串,不会原样显示$xxx
${valok.com}空白尝试读取valok.com属性,字符串没有com方法/属性,变量不存在;如果写成$!{valok.com}才会输出空


${valok}.cn ✅ 变量 + 后缀拼接
${valok.cn} ❌ 访问对象valok下的cn属性

单引号 / 双引号 & 变量粘连

代码渲染结果原理说明
what$valokwhathello foxdevelop直接拼接,Velocity自动识别变量边界
what$"valok"what$”valok”❌语法错误写法,$后面不能直接跟引号,无法识别变量
what"$valok"what”hello foxdevelop引号只是普通文本,模板内的引号不触发字符串解析,变量正常渲染
what'$valok'what’hello foxdevelop同上,单引号属于普通文本字符
$valokwhat$valokwhat❌无法识别变量!Velocity把valokwhat整体当成变量名,找不到该变量,原样输出
${valok}whathello foxdevelopwhat✅大括号锁定边界,完美解决变量和文字粘连问题

总结

  1. 变量粘连场景务必使用 ${变量名}
    错误:$valokwhat;正确:${valok}what
  2. 拼接后缀文本:${valok}.cn 不要写成 ${valok.cn}
  3. $!变量 静默引用:变量不存在时输出空白,不会打印$xxx
  4. 模板HTML里的单/双引号只是普通字符只有#set赋值内部才区分单引号(不解析变量)、双引号(解析变量)
#set($a = "$valok") // 双引号:解析变量,a=hello bamn
#set($a = '$valok') // 单引号:不解析变量,a=$valokCode language: PHP (php)

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注