我有三个非常简单的文件:
main.ftl
<#include "header.ftl">
<h1>Test</h1>
<#include "footer.ftl">
header.ftl
<h1>Header</h1>
footer.ftl
<h1>Footer</h1>
从技术上讲,它应该输出三个h1
,但我的实际输出是:
<
和>
更改为[
和]
,我尝试过更改但仍然什么都没有。*
通配符来检查父目录和当前目录但仍然没有运气。 include
指令将内容解析为.ftl
文件,所以我应该没有
的问题:parse:如果是,则包含的文件将被解析为FTL,否则整个文件将被视为简单文本(即,不会在其中搜索FreeMarker构造)。如果省略此选项,则默认为true。
那么为什么我的模板没有被解析?
答案 0 :(得分:1)
为了未来的读者... #include
指令永远不会像<#include ...>
那样输出自己(所以你现在知道,它是main.ftl
的{{1}}没有传递给FreeMarker)。其parse
参数适用于包含 ed 文件。此外,如果找不到模板,它将抛出异常,而不是像打印<#include ...>
那样做任意的事情。
答案 1 :(得分:0)
<#include "/common/copyright.ftl">
所以我认为页脚和页眉与主文件位于同一个文件夹中。所以你必须做类似的事情:
<#include "*/header.ftl">
<#include "*/footer.ftl">
答案 2 :(得分:0)
事实证明Freemarker没有将.ftl
文件作为实际.ftl
文件处理,因为服务器将内容呈现为.jsp
文件,以修复我更改的内容:
<view-map name="frs" page="">
要,
<view-map name="frs" type="screen" page="component://ecommerce/widget/CommonScreens.xml#your-identifier"/>
修复了渲染。默认情况下,如果未定义type
属性,则会自动呈现为JSP文件。