我有一个创建哈希图的 springboot 应用程序。我想创建一个具有一个标题和多行的表(映射中的每个值一个)。以下代码返回 ISE:
出现意外错误(类型=内部服务器错误, 状态=500)。无法解析 URL 的 FreeMarker 模板 [toDoListView.ftl];嵌套异常是 freemarker.core.ParseException:模板中的语法错误 “toDoListView.ftl”第47行第37列:遇到了“>”,但被 期待以下之一:“..”“..”“as”“.” “[”“(”“?”“!” “?” "+" "-" "" "/" "%" "!=" "=" "==" ">= ”>”
第 47 行是:<#list itemMap>
<#if itemMap??>
<table class="table table-bordered">
<#list itemMap>
<thead>
<tr>
<th></th>
<th>Item1</th>
<th>Item2</th>
<th>Item3</th>
</tr>
</thead>
<#item?keys as key>
<#if !itemMap?values[key_index].done>
<tbody>
<tr>
<td id="checkbox_column" width="40">
<input type="checkbox" name="im" value="${key}">
</td>
<#if itemMap?values[key_index].color == "BLUE">
<td>${itemMap?values[key_index].blue}</td>
<#elseif itemMap?values[key_index].color == "RED">
<td>${itemMap?values[key_index].red}</td>
</#if>
</tr>
</tbody>
</#if>
</#item?keys>
</table>
<#else>
No Items!
</#list>
我不确定是什么导致了这个错误。我试图遵循表格 2 下列出的示例:http://freemarker.org/docs/ref_directive_list.html
当然是因为您使用的是2.3.23之前的FreeMarker版本。在 2.3.23 之前,您不能省略
as
标签中的 #list
。 (稍后您还会遇到一些混乱的部分,例如 <#itemMap?keys as key>
或 </#listy?keys>
,但我认为您可以解决这些问题。)
要检查 FreeMarker 版本,请尝试
${.version}
(删除语法错误的部分后)。要增加来自 Spring BOM 的 FreeMarker 版本,请在 POM 的 dependencyManagement
部分中覆盖它。比如:
<dependencyManagement>
...
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
<dependency>
...
</dependencyManagement>