web-dev-qa-db-ja.com

freemarkerでnullリストを確認する方法

私のJavaコードにはList<String> listS =nullそして、これをテンプレートファイルに渡します。

今、私はif list has some data then only do something

私が試してみました

<#if listS = null>
AND
<#if !listS>
AND
<#if listS?size=0>

しかし、これらのどれも機能していないようです。私はいくつかのロジックを持っていますi Java code;を介して、ある条件が真である場合、i new this listSを入力します。

したがって、テンプレートファイルでlistSが入力されているか、nullのみであるかを知る必要があります。

どうすればいいですか?ありがとう。

編集:また、このリストSを含む構造のリストがあり(人口の有無は別の問題です)、構造のリスト全体を渡すため、ブール値をリストのリストとともにテンプレートファイルに渡します構造は不可能です。なぜなら、私は各リスト内を横断する必要があり、その横断はテンプレートファイル自体で行いたいからです。

編集2:Java nullのことを知っている人のために、FreeMarker 2.3.xはそれらを欠損値として扱います。単に、テンプレート言語はnullの概念を知りません。たとえば、 maidenNameプロパティを持ち、そのプロパティの値がnullであるBeanは、テンプレートに関する限り、そのようなプロパティがまったくない場合と同じです(極端な使用をFreeMarkerに設定していない場合)オブジェクトラッパー、つまり)nullを返すメソッド呼び出しの結果も、変数の欠落として扱われます(ここでも、通常のオブジェクトラッパーを使用すると仮定します)。詳細はFAQを参照してください。

フリーマーカーマニュアル

しかし、できる限り、それを機能させる方法についての答えはまだ得られていません。

35
Kraken

使用 - has_content ビルトイン:

<#if list5?has_content>
59
Bohemian

欠損値テスト演算子 を使用することもできます:

<#if listS??>
    <#list listS.stuff as stuff>
        ${stuff.value}
    </#list>
</#if>
7
Tarek
<#list myList![] as element>
   <#--  do something per element -->
</#list>

リストがヌルまたは空の場合、結果は空になります。

1
user712767