Условно отображать строку в шаблоне freemarker - PullRequest
0 голосов
/ 25 июня 2018

Я создаю PDF из отсортированного массива объектов JSON, отсортированных по задачам, где каждый объект, например, JSON.arr[0] == i, содержит памятку, оценку, сумму и taskText.

Я хочу отобразитьзадание в отдельной строке, только если текущее задание является первым заданием или отличается от предыдущего задания.Ничего не отображается для taskText.

<#if JSON?has_content>
<table>
  <tr>
    <th colspan="5">MEMO</th>
    <th>RATE</th>
    <th>AMOUNT</th>
    </tr>
  <#list JSON.arr as i>
    <#if i?first>
      <#assign task = i.taskText>
      <tr><td>${i.taskText}</td></tr>
    </#if>
    <#if i.taskText != task>
      <#assign task = i.taskText>
      <tr><td>${i.taskText}</td></tr>
    </#if>
    <tr>
      <td colspan="5">${i.memo}</td>
      <td>$${i.rate}</td>
      <td>$${i.amount}</td>
    </tr>
  </#list>
</table>
</#if>

1 Ответ

0 голосов
/ 25 июня 2018

Используйте встроенный ?is_first вместо ?first.Он используется для проверки того, является ли текущий элемент первым в текущем списке.

Для другого требования я бы предложил присвоить начальное значение task до цикла,Вполне может быть, что в задаче никогда не установлено ничего, кроме null, и поэтому сравнение не удается.

...