2017-08-30 150 views
1

我有三个非常简单的文件:包括不解析模板文件

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文件,所以我应该没有 问题:

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

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

回答

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

0

here

<#include "/common/copyright.ftl"> 

所以我认为脚注和标题与主文件位于同一个文件夹中。所以,你将不得不做这样的事情:

<#include "*/header.ftl"> 
<#include "*/footer.ftl"> 
+0

试过了,没有工作。 – Script47

+0

你是否得到相同的错误? –

+0

是的,它不解析。 – Script47

1

对于未来的读者着想...的#include指令从不输出本身就像<#include ...>(所以你现在知道,这是main.ftl这不是传递给FreeMarker的)。它的parse参数适用于包括文件在内的所有文件。同样,如果找不到模板,它将抛出异常,不会执行像打印<#include ...>这样的任意内容。