Velocity(10)——指令的转义

本文详细介绍了Velocity模板语言中指令转义的用法,包括单斜杠转义和双斜杠转义的不同效果,以及这些转义方式如何影响条件判断语句的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:

 

 
     
# if ($foo)
Go
!
#end

$foo为true,输出Go
! ;否则不输出任何内容。

 

 

使用转义:

 
     
\# if ( $foo )
Go
!
\#end


此时,
" \ " " # " 结合,从而破坏了原本的# if (),而$foo作为判断条件,也不会被解析。
所以上面这段代码,无论$foo是true还是false,结果都是
#
if ( $foo )
Go
!
#end
这类似于使用了#literal() ... #end指令。

 

 

 如果使用两个"\":

 
     
\\# if ( $foo )
Go
!
\\#end


首先,#if前面的两个
假定$foo是true,那么会输出 " Go! " ,并且是紧跟在刚才的 " \ " 后面(因为没有
换号符)。 # if ($foo)和#end之间的内容,都会输出,包括#end前面的两个 " \ "
它们会被解析为一个 " \ " 。如果$foo是false,仅仅输出一个"\",而"Go!"以
及后面下一行的"\"不会输出。
" \ " 结合,变为一个 " \ " 输出。然后# if ($foo)正常处理。

还有一种情况需要说明:

 
     
\\\# if ($foo)
Go
!
\\#end


前两个 " \ " 被解析为 " \ " ,第三个 " \ " 和后面的 " # " 解析为 " # " ,# if ()被破坏。所以输出就是
 
\# if ($foo)
Go
!
\......
注意最后那里,有一个合法的#end,但是它是多余的,所以这一段代码是会报错的。

 

posted on 2010-11-23 20:38 月光疾风 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yuepeng/archive/2010/11/23/1885861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值