包括不解析模板文件

时间:2017-08-30 15:21:46

标签: java freemarker ofbiz

我有三个非常简单的文件:

main.ftl

<#include "header.ftl">

<h1>Test</h1>

<#include "footer.ftl">

header.ftl

<h1>Header</h1>

footer.ftl

<h1>Footer</h1>

从技术上讲,它应该输出三个h1,但我的实际输出是:

  1. 我读到根据配置,ftl的括号可能会从<>更改为[],我尝试过更改但仍然什么都没有。
  2. 我使用了*通配符来检查父目录和当前目录但仍然没有运气。
  3. Freemarker文档声明默认情况下include 指令将内容解析为.ftl文件,所以我应该没有 的问题:
  4.   

    parse:如果是,则包含的文件将被解析为FTL,否则整个文件将被视为简单文本(即,不会在其中搜索FreeMarker构造)。如果省略此选项,则默认为true。

    那么为什么我的模板没有被解析?

3 个答案:

答案 0 :(得分:1)

为了未来的读者... #include指令永远不会像<#include ...>那样输出自己(所以你现在知道,它是main.ftl的{​​{1}}没有传递给FreeMarker)。其parse参数适用于包含 ed 文件。此外,如果找不到模板,它将抛出异常,而不是像打印<#include ...>那样做任意的事情。

答案 1 :(得分:0)

来自setting with enlargement

<#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文件。