文字列値が存在しない場合や空の場合がよくあります。これは、この状態をテストする最良の方法ですか?
#if( $incentive.disclaimer && $!incentive.disclaimer != '' )
$incentive.disclaimer
#end
Velocityに値を表示する場合、または存在しない場合は何も表示しない場合は、 quiet reference 自体でトリックを行います:
$!incentive.disclaimer
空を明示的にテストしたい場合は、 StringUtils from Apache Commons Lang が役立ちます。最初にコンテキストに追加します(参照 here ):
context.put("StringUtils", StringUtils.class);
ただし、古いバージョンのVelocityを使用している場合、クラス参照が気に入らない可能性があるため、代わりにインスタンスを追加できます。
context.put("StringUtils", new StringUtils());
次に、Velocityテンプレートから isEmpty メソッドを呼び出します。
#if($StringUtils.isEmpty($incentive.disclaimer))
## logic here...
#end
空白を空として扱う場合は、 isBlank もあります。
ただ$!incentive.disclaimer
は適合しません http://wiki.Apache.org/velocity/CheckingForNull は短い解決策を示唆しています:
#if( "$!car.fuel" != "" )
Bla bla $!incentive.disclaimer.
$ incentive.disclaimerがnullまたは ""、Velocityはレンダリングします:
Bla bla .
公式のガイドセクションを参照してください: https://velocity.Apache.org/engine/devel/user-guide.html#quiet-reference-notation
#ifが必要な場合の最も一般的なケース:変数は大きなテキストの一部であり、変数が空の場合は表示したくない場合。次に、これが必要です:
#if($incentive.disclaimer && !$incentive.disclaimer.empty)
Please read our incentive disclaimer:
$incentive.disclaimer
#end