37

私の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>

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

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

どうすればこれを行うことができますか?ありがとう。

編集:また、私は構造のリストを持っており、それぞれがこのリストを含んでいます(入力されているかどうかは別の問題です)、そして私は構造のリスト全体を渡しているので、ブール値を私のリストと一緒にテンプレートファイルに渡します各リスト内をトラバースする必要があるため、構造体は使用できません。そのトラバースは、テンプレートファイル自体で実行します。

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

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

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

4

3 に答える 3

62

has_content組み込みを使用します。

<#if list5?has_content>
于 2012-09-24T13:04:47.577 に答える
7

次のように、欠落値テスト演算子を使用することもできます。

<#if listS??>
    <#list listS.stuff as stuff>
        ${stuff.value}
    </#list>
</#if>
于 2013-04-04T18:34:24.193 に答える
5
<#list myList![] as element>
   <#--  do something per element -->
</#list>

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

于 2018-02-16T03:11:54.627 に答える