如何获取freemarker中列表的大小?

use*_*051 9 java freemarker liferay

我创建了一个内容模板,用户可以在其中创建多个卡片/盒子。它运行良好,但如果用户只创建一个盒子,我想更改 css。我尝试使用 getList()?size 但它不起作用。知道如何证明大小是否为 1 吗?

<div id="my-cards">
    <#list boxen.getSiblings() as box>
     <#assign i = box.getList()?size>   
       <#if i==1>
       <p>There is one box</p>
       </#if>
        <!-- Card-->
        <div class="card-box mb-3">
            <!-- Image-->
            <div class="card-pic">
                    <#if box.image.getData() != "">
                    <img src="${box.image.getData()}" />
                </#if>
            </div>
            <!--  Content-->
            <div class="card-box-content">


                <#if box.headline.getData() != "">
                <h2 class="title">${box.headline.getData()}</h2>
                 </#if>

                 <#if box.content.getData() != "">            
                <p class="description">${box.content.getData()}</p>
                </#if>
                <div class="card-box-footer">
                    <br />

            </div>
        </div>

    </#list>   
</div>
Run Code Online (Sandbox Code Playgroud)

小智 13

要获取列表的大小,您必须使用list?size,这意味着 boxen.getSiblings()?size对于本例来说。我认为无效box.getList()

检查这个例子:

   <#assign listA = ['one']>
   <#assign listB = ['one' , 'two']>
   <#list listA as element>
   <#if (listA?size = 1)>
     ${element}
   </#if>
   </#list>
   <#list listB as element>
   <#if (listB?size = 1)>
     ${element}
   </#if>
   </#list>
Run Code Online (Sandbox Code Playgroud)

仅满足第一个条件,输出为:一个