1. ホーム
  2. java

[解決済み] FreeMarkerのテンプレートに変数が存在するかどうかを確認する方法は?

2022-04-30 03:47:37

質問

Freemarkerのテンプレートには、テンプレート処理時に値が供給されるプレースホルダーが多数含まれています。userName変数が提供された場合、条件付きでテンプレートの一部を含めたいのですが、どのような方法がありますか?

[#if_exists userName]
  Hi ${userName}, How are you?
[/#if_exists]

しかし、FreeMarkerのマニュアルには、if_existsは非推奨と書かれているようですが、他に実現する方法が見つかりません。もちろん、単純にブーリアン変数isUserNameを追加で用意して、それをこのように使うこともできるのですが。

[#if isUserName]
  Hi ${userName}, How are you?
[/#if]

しかし、もしuserNameが存在するかどうかをチェックする方法があれば、この余分な変数を追加せずに済みます。

どのように解決するのですか?

値が存在するかどうかを確認する。

[#if userName??]
   Hi ${userName}, How are you?
[/#if]

または、freemarkerの標準的な構文で。

<#if userName??>
   Hi ${userName}, How are you?
</#if>

値が存在し、かつ空でないことを確認する。

<#if userName?has_content>
    Hi ${userName}, How are you?
</#if>