Ich habe mich mit FreeMarker vertraut gemacht, einer Template-Engine für Java.
Ich habe den Punkt erreicht, an dem ich in der Lage bin, ein Objekt über eine Hash Map an die Template Engine zu übergeben. Das funktioniert ganz gut. Aber sobald ich versuche, eine beliebige Menge von mehreren Objekten an FreeMarker zu übergeben, bekomme ich eine freemarker.template.TemplateException und beschwere mich, dass es "Expected collection or sequence. jobs evaluated instead to freemarker.template.SimpleHash".
Nach dem, was ich in den verschiedenen Quellen gelesen habe, ist dies zu erwarten.
Ich habe einen Großteil der Arbeit erledigt und eine Reihe von Kommentaren gefunden, wie man das Problem umgehen kann. Aber, ehrlich gesagt, (a) für viele der Beispiele war es unklar, wie genau ihre Ratschläge in meinem Fall gilt - obwohl ich Java-Grundlagen für eine ganze Weile gekannt habe, bin ich ziemlich neu auf einige der Architektur in Bezug auf Java-Web-Anwendungen und (b) ich bin verwirrt, welche der Ansätze war der beste Ansatz.
Alles, was ich tun möchte, ist, vereinfacht gesagt, Folgendes:
-
Ich habe ein einfaches Servlet.
-
Ich habe eine einfache Klasse (für dieses Beispiel namens Invoice) mit ein paar Methoden und Eigenschaften.
-
Ich möchte mein Servlet (in irgendeiner Weise) eine Liste/Array/Sequenz/Hashmap von Instanzen dieser Objekte (oder Ansichten dieser Objekte) über FreeMarker's Prozess-Methode zu präsentieren.
-
Ich möchte meine .ftl-Vorlage eine Schleife durch die Liste/Array/Sequenz/Hashmap und Display-Methode-Ergebnisse, etwas wie diese haben:
< # list invoices as invoice> Invoice note: ${invoice.getNote()}, Invoice Amount:${invoice.getAmount()} < / # list>
Ich bin nicht unbedingt auf der Suche nach einer schnellen und schmutzigen Lösung für dieses Problem. Ich bin neu bei FreeMarker, aber ich möchte dies auf die richtige Art und Weise tun, die elegant und gut gestaltet ist. Ich bin also bereit, diesen Ansatz völlig neu zu überdenken. Kann mir jemand sagen, was ich tun muss, um so etwas zum Laufen zu bringen?