import指令详解


java Freemarker中import指令类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件。

定义

<#import path as hash>
<#import "lib/my_test.ftl" as com>

上面例子它会为lib/my_test.ftl创建一个新的哈希表变量,就是空的命名空间com,my_test.ftl这个模板的所有变量放置在com的Map对象中。

例子

//inc1.ftl
<#assign username="刘德华">
//inc2.ftl
<#assign username="张学友">
//import将inc1.ftl与inc2.ftl导入

例子

总结

  1. import是将标签中指定的模板中的已定义的宏、函数等导入到当前模板中,并在当前文档中指定一个变量作为该模板命名空间,以便当前文档引用。与include的区别是该指令不会讲import指定的模板内容渲染到引用的模板的输出中。 如:<#import ”../../service.ftl as service>.其作用是将service.ftl中的定义的各宏、函数、变量、自定义、设置等内容用指定的命名空间名称加以引用。但是当前文档不会将import的模板输出插入到import标签的位置。

  2. importinclude标签一样可以使用相对路径和绝对路径引用外部模板。 如:service.ftl中定义的宏如下:<#macro branchService>,在当前文档中可以这样导入<#import "../../service.ftl" as service> ,service变量作为该文档中使用service中服务的命名空间,调用时应该这样:<@service.branchService >..... import也可以被引入多次, 但是多次引入和单次引入的效果是一样的。