Как передать и получить доступ к списку сложных объектов и его свойств для freemarker - PullRequest
0 голосов
/ 03 октября 2019

Модель Java, которая передается в шаблон бесплатного маркера:

public clazz {
public void methodOne() {
        List<InvoiceObject> invoices = new ArrayList<>();
Map<String, String> properties = ImmutableMap.<String, String>builder()
                    .put("invoiceNumber", invoiceNumber)
                    .build();
invoices.add(InvoiceObject.builder().properties(properties).build());
// adding model as atribbute and invoiking process method
 }
    @Data
    @Builder
    public static class InvoiceObject { // inner class
        public Map<String, String> properties;
    }
}

Шаблон:

<#list invoices as invoice>
    <tr>
        <td>${invoice.properties["invoiceNumberBuy"]}<td>
    </#list>

В результате:

freemarker.core.InvalidReferenceException: The following has evaluated to null or missing

ОБНОВЛЕНИЕ:

Шаблон должен иметь invoiceNumber вместо invoiceNumberBuy. $ {invoice.properties.invoiceNumber}

1 Ответ

0 голосов
/ 04 октября 2019

Ваша карта повторяется неверно. Вероятно, вы должны попробовать, как показано ниже.

<#list invoices as invoice>
    <tr>
<#list invoice.properties?keys as prop>
        <td>${invoice.properties['${prop}']}<td>
</#list>
</tr>
  </#list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...