Velocity: есть ли способ проверить, определена ли переменная
Я хочу включить один шаблон nested
в другие cont1
, cont2
, cont3
.
И вложенный шаблон должен скрывать один конкретный элемент управления только для cont1.
Перед включением в cont1
я хотел бы присвоить значение некоторой переменной флага $hideMyControl
.
И внутри вложенного шаблона я хотел бы проверить, присвоено ли $hideMyControl
значение.
Как выполнить такую проверку?
Ответы
Ответ 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