java velocity vm file #set使用boolean变量

问题描述 投票:1回答:2

当我在Apache官方网站上找到速度项目指南时,我们不能使用#set的布尔变量,但是当我在我的项目中使用它时它也可以工作。

#set($isRight=true)
#if($isRight)
##execute
#end

#set($isRight=false)
#if($isRight)
##not execute
#end

我想知道速度是否支持#set布尔变量以及我使用的方式是否合法。

java apache web velocity template-engine
2个回答
0
投票

在速度方面,没有明确的数据类型,因此没有布尔变量支持。但由于速度已经建立在J​​AVA平台上,如果你指定了兼容的值,那么它可以在诸如“if”操作(代码中显示的操作)之类的操作中给出预期的结果。这是因为在Java中,if表达式中需要一个布尔值,并且您提供的东西可以很容易地转换为布尔值。

如果你给出类似#set($ isRight = true1)的东西,上面编写的代码将由Java引擎内部处理,就像你在'if'表达式中指定了一个String,它无法被转换为布尔值,因此会抛出类型转换异常(或ClassCastException)。除了'true'或'false'之外的任何值都会发生这种情况,这些值实际上是字符串,但可以成功地转换为布尔值,这在“if”表达式中是预期的。

因此它不是布尔类型支持,但幕后的Java实现使事情有效。


0
投票

尚未发布的Velocity 2.0确实支持此类测试。

同时,你可以诉诸#if("isRight"=="true")...

© www.soinside.com 2019 - 2024. All rights reserved.