Freemarker:获取包含(前缀)的模板
Freemarker: getting a Template with include (prefix)
我正在尝试以下操作:
MainTemplate.ftl
<root>
<#List items as item>
<#include "custom_item.ftl"> [Option 1]
</#List>
<#include "custom_item.ftl"> [Option 2]
</root>
custom_item.ftl
<root>
<name>${name}</name>
</root>
在某些文件中,包含类似于 [选项 1],在其他文件中类似于 [选项 2]。
要访问 ${name} 变量,我必须使用两种不同的方式:
- Option 1: ${item.name}
- Option 2: ${name}
完全可以理解,但也是我的问题。我怎样才能确保它始终有效?就像为包含提供前缀一样,它总是一样的。
例如:
MainTemplate.ftl
<root>
<#List items as item>
<#include "custom_item.ftl" prefix='item'> [Option 1]
</#List>
<#include "custom_item.ftl"> [Option 2]
</root>
custom_item.ftl
<root>
<# assign prefix = prefix?root>
<name>${prefix.name}</name>
</root>
这样总能奏效。我的方法显然行不通,有人有可行的解决方案吗?
Edit: Answer included
MainTemplate.ftl
<root>
<#List listItems as listItem>
<#assign item = listItem>
<#include "custom_item.ftl">
</#List>
<#assign item = .data_model>
<#include "custom_item.ftl">
</root>
custom_item.ftl
<root>
<name>${item.name}</name>
</root>
始终使用 ${item.name}
。在数据模型根本身就是项目的情况下(是吗?),您可以在 #include
.
之前执行类似 <#assign item = .data_model>
的操作
我正在尝试以下操作:
MainTemplate.ftl
<root>
<#List items as item>
<#include "custom_item.ftl"> [Option 1]
</#List>
<#include "custom_item.ftl"> [Option 2]
</root>
custom_item.ftl
<root>
<name>${name}</name>
</root>
在某些文件中,包含类似于 [选项 1],在其他文件中类似于 [选项 2]。 要访问 ${name} 变量,我必须使用两种不同的方式:
- Option 1: ${item.name}
- Option 2: ${name}
完全可以理解,但也是我的问题。我怎样才能确保它始终有效?就像为包含提供前缀一样,它总是一样的。
例如:
MainTemplate.ftl
<root>
<#List items as item>
<#include "custom_item.ftl" prefix='item'> [Option 1]
</#List>
<#include "custom_item.ftl"> [Option 2]
</root>
custom_item.ftl
<root>
<# assign prefix = prefix?root>
<name>${prefix.name}</name>
</root>
这样总能奏效。我的方法显然行不通,有人有可行的解决方案吗?
Edit: Answer included
MainTemplate.ftl
<root>
<#List listItems as listItem>
<#assign item = listItem>
<#include "custom_item.ftl">
</#List>
<#assign item = .data_model>
<#include "custom_item.ftl">
</root>
custom_item.ftl
<root>
<name>${item.name}</name>
</root>
始终使用 ${item.name}
。在数据模型根本身就是项目的情况下(是吗?),您可以在 #include
.
<#assign item = .data_model>
的操作