FreeMarker:两个列表合二为一 table

FreeMarker : two list show in one table

我的问题是这样的:

我有两个列表:

list ups = {up1,up2} list downs = {down1 , down2 , down3}

我需要这样的 table :

      ups                        downs
  no        name           no             name    
 ${up1.no}  ${up1.name}  ${down1.no}    ${down1.name}
 ${up2.no}  ${up2.name}  ${down2.no}    ${down2.name}
                         ${down3.no}    ${down3.name}

我的代码如下:

    <#list downs as down>
     <tr>
     <td>ups?</td>
     <td>${down.no}</td>
     <td>${down.name}</td>

     </tr>
     </#list>

我假设两个列表的大小可能不同。这让事情有点复杂,但是像这样:

<#assign maxSize = (downs?size < ups?size)?then(ups?size, downs?size)>
<#list 0 ..< maxSize as i>
  <td>${(ups[i].no)!}</td>
  <td>${(ups[i].name)!}</td>
  <td>${(downs[i].no)!}</td>
  <td>${(downs[i].name)!}</td>
</#list>

当一个列表中没有更多项目但另一个列表中仍有项目时,需要 (...)! 东西来抑制错误。

(在 2.3.28 中不需要 maxSize 计算,您可以在 2.3.28 中编写 0 ..< [ups?size, downs?size]?max。)