Freemarker - Проверьте, содержит ли список только пустые строки - PullRequest
0 голосов
/ 19 июня 2019

У меня есть список с возможными только пустыми строками.

Моя цель - создать причину, если я могу распознать, если список содержит только пустые строки.

Когда я пытаюсь:

    if list?size gt 0, 

Я всегда вхожу в цикл if, потому что список не пустой, он содержит пустые строки.

Вот пример:

Все строки могут быть пустыми ("").

    <#assign list = [string1, string2, string3, string4, string5]>

    <#if list contains not only empty strings >

    do some things 

    </#if>

Вывод должен быть таким: Входите только в цикл if, если список содержит не только пустые строки.

Кто-нибудь знает, как это может работать? (Не просматривая весь список и не проверяя каждую строку)

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Но вы должны пройти весь список, по крайней мере, начиная с FreeMarker 2.3.28. Напишите для него функцию:

<#function containsNonEmpty ls>
  <#list ls as i>
    <#if i != ''>
      <#return true>
    </#if>
  </#list>
  <#return false>
</#function>

Может быть, вам действительно нужно удалить пустые элементы, даже если не все элементы пусты. А затем проверьте, если список пуст. В 2.3.29 вы сможете использовать myList?filter(s -> s != '') для этого.

0 голосов
/ 21 июня 2019

Вы должны использовать ?has_content Проверьте этот документ

<#assign list1 = ["", " ", "s"]>

    <#list list1 as list>
    <#if list?has_content >
            ${list}

    </#if>

    </#list>

Вывод будет: s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...