Я познакомился с FreeMarker, механизмом шаблонов для Java.
Я дошел до точки, где я могу передать объект движку шаблона через хэш-карту. Это работает хорошо. Но как только я пытаюсь передать какой-либо набор нескольких объектов в FreeMarker, он дает мне freemarker.template.TemplateException и жалуется, что он "ожидаемый сбор или последовательность. Заданий вместо этого оценивается вместо freemarker.template.SimpleHash".
Из того, что я понимаю из чтения этого в различных ресурсах, этого можно ожидать.
Теперь я проделал большую часть работы с ногами и обнаружил, что многие люди комментируют, как обойти это. Но, откровенно говоря, (а) для многих примеров было непонятно, насколько точно их рекомендации применимы в моем случае - хотя я уже давно знал основы Java, я довольно новичок в некоторой архитектуре относящихся к веб-приложениям Java и (б) я смущен тем, какой из подходов был лучшим подходом.
Все, что я хочу сделать, на самом упрощенном уровне, в основном таково:
-
У меня есть простой сервлет.
-
У меня есть простой класс (для этого примера с именем Invoice) с несколькими методами и свойствами.
-
Я хочу, чтобы мой сервлет (каким-то образом) представил список/массив/последовательность/хэш-образ экземпляров этих объектов (или представлений этих объектов) с помощью метода процесса FreeMarker.
-
Я хочу, чтобы мой .ftl-шаблон выполнял цикл через список/массив/последовательность/hashmap и результаты метода отображения, примерно так:
< # list invoices as invoice>
Invoice note: ${invoice.getNote()}, Invoice Amount:${invoice.getAmount()}
< / # list>
Теперь я не обязательно ищу быстрое и грязное решение. Я новичок в FreeMarker, но я хочу сделать это правильно, это элегантный и хороший дизайн. Поэтому я открыт, чтобы полностью переосмыслить этот подход. Может ли кто-нибудь помочь мне увидеть, что мне нужно сделать, чтобы что-то вроде этого работать?