freemarker 模板语法 spring boot

问题描述 投票:0回答:1

我有一个创建哈希图的 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

java spring freemarker
1个回答
0
投票

当然是因为您使用的是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>
© www.soinside.com 2019 - 2024. All rights reserved.