33

文字列値が存在しないか空である場合がよくあります。これは、この状態をテストする最良の方法ですか?

#if( $incentive.disclaimer && $!incentive.disclaimer != '' ) 
   $incentive.disclaimer 
#end
4

3 に答える 3

44

値がある場合は Velocity に値を表示するか、値がない場合は何も表示しないようにする場合は、静かな参照だけでうまくいきます。

$!incentive.disclaimer

空であることを明示的にテストしたい場合は、Apache Commons LangのStringUtilsが役に立ちます。最初にそれを Context に追加します (ここを参照してください):

context.put("StringUtils", StringUtils.class);

古いバージョンの Velocity を使用している場合は、クラス参照が気に入らない可能性があるため、代わりにインスタンスを追加できます。

context.put("StringUtils", new StringUtils());

次に、Velocity テンプレートからisEmptyメソッドを呼び出すことができます。

#if($StringUtils.isEmpty($incentive.disclaimer))
    ## logic here...
#end

空白を空として扱いたい場合は、isBlankもあります。

于 2012-10-31T14:35:51.433 に答える
40

http://wiki.apache.org/velocity/CheckingForNull$!incentive.disclaimerに合わない場合は、短い解決策を提案します。

#if( "$!car.fuel" != "" )
于 2012-11-29T15:50:37.920 に答える
16

Quiet Reference Notation が欲しい: $!incentive.disclaimer

Bla bla $!incentive.disclaimer. 

$incentive.disclaimernullまたは""の場合、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
于 2014-02-14T13:48:24.827 に答える