Freemarker 函数在哪里设置?
Where are Freemarker Functions set?
之前没有用过Freemarker,继承了一些编译不过的模板。我已将导致问题的范围缩小为:
${text('Text and {0}', 'More Text')}
这个text()函数是从哪里来的?我知道它试图将第二个字符串 return 注入到第一个字符串中,例如:"Text and More Text"。
这里是错误:
FreeMarker template error:
For "...(...)" callee: Expected a method, but this has evaluated to an extended_hash (wrapper: f.t.SimpleHash):
modernizr-2.6.2.js 是唯一 javascript 导入的。
任何想法为什么这条线会导致问题以及应该在哪里声明这个函数?
它可以来自几个地方:
来自数据模型(您传递给 Template.process
的参数之一)
来自共享变量,添加到 Configuration
单例。
来自 #include
-d 模板(或来自您所在的模板),通过 #function text
或 #assign text = ...
(或 #global text = ...
)
来自 #import
编辑的模板 #global text = ...
(极不可能...)
但是一个可能有趣的事情是错误说 text
确实存在,但它是一个散列(类似于 Map
的东西),而不是可调用的东西。也许也被称为 text
的东西掩盖了好的 text
? ${.data_model.text('Text and {0}', 'More Text')}
说什么?
您提到了一个 JavaScript 文件。 FreeMarker 与 JavaScript 无关(它在服务器上运行,在 JVM 内部)。
之前没有用过Freemarker,继承了一些编译不过的模板。我已将导致问题的范围缩小为:
${text('Text and {0}', 'More Text')}
这个text()函数是从哪里来的?我知道它试图将第二个字符串 return 注入到第一个字符串中,例如:"Text and More Text"。
这里是错误:
FreeMarker template error:
For "...(...)" callee: Expected a method, but this has evaluated to an extended_hash (wrapper: f.t.SimpleHash):
modernizr-2.6.2.js 是唯一 javascript 导入的。
任何想法为什么这条线会导致问题以及应该在哪里声明这个函数?
它可以来自几个地方:
来自数据模型(您传递给
Template.process
的参数之一)来自共享变量,添加到
Configuration
单例。来自
#include
-d 模板(或来自您所在的模板),通过#function text
或#assign text = ...
(或#global text = ...
)来自
#import
编辑的模板#global text = ...
(极不可能...)
但是一个可能有趣的事情是错误说 text
确实存在,但它是一个散列(类似于 Map
的东西),而不是可调用的东西。也许也被称为 text
的东西掩盖了好的 text
? ${.data_model.text('Text and {0}', 'More Text')}
说什么?
您提到了一个 JavaScript 文件。 FreeMarker 与 JavaScript 无关(它在服务器上运行,在 JVM 内部)。