我有一个 java.lang.Iterable (实际上是一个 com.google.gson.JsonArray 实例)。
我想使用 freemarker (2.3.16) 枚举列表中的项目。
[#assign sports = controller.sports]
[#-- At this point, sports is bound to a com.google.gson.JsonArray instance. --]
[#list sports as sport]
${sport_index}
[/#list]
我希望避免编写自定义 bean 和 Gson 反序列化器只是为了获得显式的项目集合。使用 Gson(它已经为我将 JSON 字符串反序列化为 JsonObject)然后从该 JsonObject 创建我自己的对象 DAG 对我来说似乎很浪费。
不幸的是,我无法找到一种方法让 Freemarker 将 java.lang.Iterable 视为列表。我得到:
freemarker.template.TemplateException : Expected collection or sequence.
controller.sports evaluated instead to freemarker.ext.beans.XMLStringModel on line 8, column 16 in sports.html.
freemarker.core.TemplateObject.invalidTypeException(line:135)
freemarker.core.IteratorBlock$Context.runLoop(line:190)
freemarker.core.Environment.visit(line:417)
freemarker.core.IteratorBlock.accept(line:102)
freemarker.core.Environment.visit(line:210)
显式循环迭代器应该可以工作,例如:
[#list sports.iterator() as sport]
${sport_index}
[/#list]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)