速度:是否可以检查变量是否已定义

时间:2011-01-28 06:50:30

标签: variables velocity template-engine

我想在其他nestedcont1cont2中加入一个模板cont3。 并且嵌套模板应该只隐藏cont1的一个特定控件。 在包含到cont1之前,我想为某个标志变量$hideMyControl赋值。

在嵌套模板中,我想检查是否为$hideMyControl赋值。

如何进行此类检查?

6 个答案:

答案 0 :(得分:32)

#if($hideMyControl)
    // your code
#end

如果定义了$ hideMyControl,则代码将执行

答案 1 :(得分:16)

您可以使用

执行此操作
  #if($!{$articleLeader})
      // Perform your operation or the template part you want to show.
  #end

有关详细信息,请参阅Apache Velocity Reference Manual的“正式参考”部分。

答案 2 :(得分:5)

#if($!{hideMyControl} != "")
## do something if $hideMyControl is defined
#end

这适用于AWS API网关主体映射模板。有关详细信息,请参阅Velocity用户指南中的Quiet Reference Notation

答案 3 :(得分:1)

我正在使用

#if ($hideMyControl) 
    //do something 
#end 
几个月前, 但是今天它不再起作用了。

我来到这里寻求帮助,并注意到一种新的写作方式:

#if($!{$hideMyControl})
   // do something
#end

此代码有效!

答案 4 :(得分:0)

检查$ hideMyControl是否在Velocity上下文中并且IS NOT boolean' true'价值(或'假'以及):

#if ($hideMyControl && $hideMyControl != true)
    ##do stuff
#end

当然,如果您真的使用$ hideMyControl变量作为布尔类型,那么您不需要第二部分条件。

答案 5 :(得分:0)

根据docs for Strict Reference Mode,可以使用几种结构来检查是否定义了变量。

#if ($foo)#end                  ## False
#if ( ! $foo)#end               ## True
#if ($foo && $foo.bar)#end      ## False and $foo.bar will not be evaluated
#if ($foo && $foo == "bar")#end ## False and $foo == "bar" wil not be evaluated
#if ($foo1 || $foo2)#end        ## False $foo1 and $foo2 are not defined

所以这段代码适用于我的情况。

#if( !$value )
  // Perform your operation or the template part you want to show.
#end