我一直在熟悉 FreeMarker,这是一个用于 Java 的模板引擎。
我已经可以通过哈希映射将对象传递给模板引擎了。这个没问题。但是,一旦我尝试传递任何多个对象的集合时,FreeMarker 就会抛出 freemarker.template.TemplateException 异常,并抱怨“预期集合或序列。jobs 被评估为 freemarker.template.SimpleHash”。
从我在各种资源中阅读的信息来看,我理解这是可以预料到的。
现在,我找到了许多人对如何解决这个问题的评论。但是,坦率地说,(a) 对于许多示例,他们的建议如何适用于我的情况并不清楚——即使我已经知道 Java 基础知识很长时间了,但我对Java Web 应用程序架构的某些方面还很陌生, (b) 我也不确定哪种方法是最好的方法。
在最简化的级别上,我只想做到以下几点:
我有一个简单的 Servlet。
我有一个简单的类(在本例中命名为 Invoice),其中包含几个方法和属性。
我希望我的 Servlet(以某种方式)通过 FreeMarker 的 process 方法呈现这些对象的实例列表/数组/序列/哈希图或这些对象的视图。
我希望我的 .ftl 模板通过循环遍历这个列表/数组/序列/哈希图并显示方法结果,类似于这样:
< # list invoices as invoice>
Invoice note: ${invoice.getNote()}, Invoice Amount:${invoice.getAmount()}
< / # list>
现在,我并不是一定要寻求一种快速而不太优雅的解决方案。虽然我对FreeMarker不熟悉,但我想以正确、优雅和良好设计的方式来完成此任务。因此,我很乐意完全重新思考这种方法。有人能帮助我看到需要做什么才能使这样的事情工作吗?