当我在Apache官方网站上找到速度项目指南时,我们不能通过#set使用布尔变量,但是当我在项目中使用它时它也可以工作。
#set($isRight=true)
#if($isRight)
##execute
#end
#set($isRight=false)
#if($isRight)
##not execute
#end
我想知道速度是否支持#set布尔变量以及我使用的方式是否合法。
答案 0 :(得分:0)
在速度方面,没有明确的数据类型,因此没有布尔变量支持。但是由于速度已经建立在JAVA平台上,如果你指定一个兼容的值,那么它可以在诸如" if"之类的操作中给你预期的结果。操作(代码中显示的操作)。这是因为在Java中,if表达式中需要一个布尔值,并且您提供的东西可以很容易地转换为布尔值。
如果你给出类似#set($ isRight = true1)之类的东西,上面编写的代码将由Java引擎内部处理,就像你在里面指定了一个字符串'如果'表达式,它不能被转换为布尔值,因此会抛出一个类型转换异常(或ClassCastException)。除了' true'之外的任何其他值都会发生这种情况。或者' false'这里实际上是字符串,但可以成功地转换为布尔值,如果'表达
因此它不是布尔类型支持,但幕后的Java实现使事情有效。
答案 1 :(得分:0)
尚未发布的Velocity 2.0确实支持此类测试。
同时,您可以诉诸#if("isRight"=="true")...
答案 2 :(得分:0)
经验表明您的示例有效,但您是对的,文档没有明确说明您可以使用#set
指令为变量分配 Boolean 值(其中有meticulously detailed cases,其中缺少有关 Boolean 的信息)。
因此,如果您要确保所编写的代码与文档100%兼容,则可以使用其他值代替{em> Boolean ,而将according to the documentation转换为其他值。改为 Boolean 。他们是例如0
的{{1}}和false
的{{1}}。
然后您的示例如下所示:
1