Velocity, что самый эффективный способ проверить, является ли строка пустой и не нулевой
У меня часто бывают случаи, когда строковое значение отсутствует и/или пусто. Это лучший способ проверить это условие?
#if( $incentive.disclaimer && $!incentive.disclaimer != '' )
$incentive.disclaimer
#end
Ответы
Ответ 1
Если вы просто хотите, чтобы Velocity отображала значение, если оно есть или отображает ничего, если отсутствует, тихая ссылка сама по себе сделает трюк:
$!incentive.disclaimer
Если вы хотите явно протестировать пустое, StringUtils из Apache Commons Lang может Помогите. Сначала добавьте его в свой контекст (ссылка здесь):
context.put("StringUtils", StringUtils.class);
Хотя, если вы используете более старую версию Velocity, ей может не понравиться ссылка на класс, поэтому вы можете добавить экземпляр вместо этого:
context.put("StringUtils", new StringUtils());
Затем вы можете вызвать его isEmpty из своего шаблона Velocity:
#if($StringUtils.isEmpty($incentive.disclaimer))
## logic here...
#end
Если вы хотите, чтобы пробел считался пустым, также isBlank.
Ответ 2
В случаях, когда только $!incentive.disclaimer
не подходит http://wiki.apache.org/velocity/CheckingForNull предлагает короткое решение:
#if( "$!car.fuel" != "" )
Ответ 3
Вам нужна тихая ссылка: $! stimive.disclaimer
Bla bla $!incentive.disclaimer.
Если $поощрение .disclaimer null или "", Velocity отобразит:
Bla bla .
Обратитесь к официальному разделу руководства:
https://velocity.apache.org/engine/devel/user-guide.html#quiet-reference-notation
Иногда вам нужно #if
Наиболее распространенный случай, когда вам нужно #if: ваша переменная является частью большей части текста, и вы не хотите показывать ее, если переменная пуста. Тогда вам это нужно:
#if($incentive.disclaimer && !$incentive.disclaimer.empty)
Please read our incentive disclaimer:
$incentive.disclaimer
#end