Обнуляемая дата в Freemarker

Это часть моего шаблона freemarker:

${order.needByDate?if_exists?date}

Я хочу, чтобы он работал следующим образом:

  • если needByDate равно нулю, то ничего не писать
  • если он не нулевой, то напишите часть даты

Вышеупомянутое работает только во втором сценарии. Каков правильный способ добиться этого?


person Ula Krukar    schedule 09.12.2009    source источник


Ответы (3)


Может быть более разумный способ сделать это, но следующее должно выполнить эту работу.

<#if order.needByDate??>${order.needByDate?date}</#if>
person cherouvim    schedule 09.12.2009

Это также должно работать

${(order.needByDate?date)!}

Скобки необходимы

Вы также можете добавить значение по умолчанию, такое как «н/д», как это

${(order.needByDate?date)!"n/a"}
person Glenn Lawrence    schedule 02.05.2014

Решение, учитывающее нулевые и пустые строковые значения:

Для Freemarker версии 2.3.23 или новее:

${aDateField?has_content?then(aDateField?datetime?string["MM/dd/yyyy hh:mm:ss"],"")}

Для более старых версий:

<#if aDateField?has_content>
${aDateField?datetime?string["MM/dd/yyyy hh:mm:ss"]}
</#if>

Вы можете протестировать его на странице https://try.freemarker.apache.org/.

person Juan Ignacio Barisich    schedule 05.03.2020