Подтвердить что ты не робот

Velocity: есть ли способ проверить, определена ли переменная

Я хочу включить один шаблон nested в другие cont1, cont2, cont3. И вложенный шаблон должен скрывать один конкретный элемент управления только для cont1. Перед включением в cont1 я хотел бы присвоить значение некоторой переменной флага $hideMyControl.

И внутри вложенного шаблона я хотел бы проверить, присвоено ли $hideMyControl значение.

Как выполнить такую ​​проверку?

4b9b3361

Ответ 1

Вы можете сделать это, используя

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

Для получения дополнительной информации см. раздел "формальная ссылка" справочного руководства Apache Velocity.

Ответ 2

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

Если $hideMyControl определен, ваш код выполнит

Ответ 3

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

Это работает для меня в AWS API Gateway Body Mapping Templates. Подробнее см. Quiet Reference Notation в руководстве пользователя Velocity.

Ответ 4

Я использовал

#if ($hideMyControl) 
    //do something 
#end 

так как несколько месяцев назад, однако сегодня он больше не работает.

Я пришел сюда, чтобы найти помощь, и заметил новый способ его написания:

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

этот код работает!

Ответ 5

Чтобы проверить, находится ли $hideMyControl в контексте Velocity и не имеет значения boolean 'true' (или 'false'):

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

Конечно, если вы действительно используете переменную $hideMyControl как тип boolean, вам не нужна вторая часть условия.

Ответ 6

В соответствии с docs для режима строгого справочника можно несколько конструкций проверить, определена ли переменная.

#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