当前位置: 首页 > 知识库问答 >
问题:

使用configuration.addAutoImport()导入宏时引发异常

韩晋
2023-03-14

editable.FTL

[#ftl]
[#macro editable field ]
   [#if field??]
        [#if isEditable]
            <h:inputext value="${field}" />
        [#else]
            ${field?eval}
        [/#if]
    [/#if]
[/#macro]

什么是正确的方法来导入到我的模板。我尝试使用cfg.addautoimport(“me”,“editable.ftl”)。当我试图处理我的主模板时,会引发以下异常。

错误[FreeMarker.runtime](http-localhost-127.0.0.1-8080-1)执行FreeMarker模板时出错:FreeMarker.core.InvalidReferenceException:以下内容已计算为null或缺失:==>field[在模板“可编辑”第5行,第30列]

提示:如果已知失败表达式在法律上为null/missing,可以使用myoptionalvar!mydefault指定默认值,或者使用[#If myoptionalvar??]when-present[#else]when-missing[/#If]。(这些只覆盖表达式的最后一步;要覆盖整个表达式,请使用parenthessis:(myoptionvar.foo)!mydefault,(myoptionvar.foo)??

失败的指令:==>${field}[在模板“Editable”第5行,第28列]在freeMarker.core.invalidreferenceException.getInstance(invalidreferenceException.java:98)[freeMarker-2.3.20.jar:2.3.20]在freeMarker.core.evaluitil.coorceModelToString(evalutil.java:382)[freeMarker-2.3.20.jar:2.3.20]在freeMarker.core.expression.evalandcoerceString(20.jar:2.3.20]在freemarker.core.environment.visit(environment.java:265)[freemarker-2.3.20.jar:2.3.20]在freemarker.core.mixedcontent.accep(MixedContent.java:93)[freemarker-2.3.20.jar:2.3.20]在freemarker.core.environment.visit(environment.java:265)[freemarker-2.3.20.jar:2.3.20]在.jar:2.3.20]在freemarker.core.environment.importLib(environment.java:1733)[FreeMarker-2.3.20.jar:2.3.20]在freeMarker.template.configuration.doAutoImportSandIncludes(configuration.java:1105)[FreeMarker-2.3.20.jar:2.3.20]在freeMarker.core.configurable.doAutoImportSandIncludes(configurable.java:1271)[FreeMarker-2.3.20.jar:2.3.20]在20]

宏代码应该在调用时执行,但这里似乎是在导入过程中调用的。这里处理的真的是宏吗?请指导我这有什么问题。

共有1个答案

邵骁
2023-03-14

在导入时不会执行宏(当然,除非您在导入的FTL本身中调用宏之外的宏)。这看起来像是标记语法选择的问题。如果FTL没有从默认的<#...>标记语法切换到[#...]标记语法,那么只有${...}-s是非静态文本部分,因此在您的示例中不会定义字段。所以问题是,当您使用[#ftl]启动模板时,为什么它不切换。可能在文件的开头有一个不可见的BOM(例如,Windows记事本在编辑UTF-8文件时添加了一个BOM),或者在[#FTL]之前有其他东西。

顺便说一句,将tag_syntax设置为auto_detect可以防止这种意外。它不是向后兼容性的默认值...

 类似资料:
  • 您好,我正在尝试使用以下代码设置keras: 它会给我带来以下错误消息: RuntimeError回溯(最近一次调用last)RuntimeError:根据API版本0xc编译模块,但此版本的numpy是0xb 回溯(最近的调用最后)重要错误:numpy.core.multiarray导入失败 回溯(最近的调用最后)重要错误:numpy.core.umath导入失败 回溯(最近的调用最后)重要错误

  • 我正在使用Spring In Action 3 Action学习Spring MVC,我已经实现了显示用户注册表的基本程序,一旦我们提交表单,它将使用进行验证。 这是我的Spring控制器: 这是我的Spitter类文件: 这是我的编辑。显示给用户注册的jsp文件: 要加载表单,我将访问URL为:,一旦表单被加载,我只需提交表单而无需输入任何详细信息,以便我可以检查我的表单是否得到验证。但是我得到

  • 问题内容: 当我使用下面的代码时,在什么情况下会得到异常。 任何人都可以帮忙吗???????? 问题答案: HTTP状态代码是服务器的响应,因此,如果您控制服务器,则可以使其返回所需的任何错误。如果您无法控制服务器,则可以尝试发送错误/无效的请求,以便服务器进行投诉。 在服务器端这样的事情:

  • 我正在集群中使用hazelcast-2.5。我试图在我的Hazelcast映射(String,ArrayList)的store-load实现中加载用户定义对象的ArrayList(带有几个字符串字段和一个整数)。初始加载没有给我任何例外。但是,如果由于对映射中没有值的键的get调用而调用了load,(因此调用了load),则会引发以下异常(在该时间点之后,我还会对映射执行remove操作): 它给