lib/my_test.ftl 模板内容如下:

<#macto copyright date><p>Copyright (C)${date}Julia Smith.All rights reserved.</p></#macro><#assign mail = "jsmith@acme.com">

假设想在aWebPage.ftl 中使用这个模板.

如果使用

<#include "/lib/my_test.ftl">

会在主命名空间中创建两个变量. 如果再引入同名的变量时就会被后引入的或者新定义的覆盖.这样就不是很好,因为只想让它们在"My Test Library"命名空间中.就需要用 import代替include了

<#import "lib/my_test.ftl" as my>

它会为lib/my_test.ftl创建一个新的哈希表变量,就是空的命名空间my,如果在主命名空间有一个变量,名为mail 或者 copyright,就不会引起混乱,因为两个模板使用了不同的命名空间.

如果 在lib/my_test.ftl 中修改 copyright 如下

<#macro copyright date>   <p>Copyright (C) ${date} Julia Smith. All rights reserved.   <br>Email: ${mail}</p> </#macro>

然后修改aWebPage,ftl中的内容如下

<#import "/lib/my_test.ftl" as my> <#assign mail="fred@acme.com"> <@my.copyright date="1999-2002"/> ${my.mail} ${mail}

输入为

<p>Copyright (C) 1999-2002 Julia Smith.All rights reserved.<br>Email :jsmith@acme.com</p>jsmith@acme.comfred@acme.com

以上说明可能不太好理解  在其他博客上看到一看即懂得解析 摘录再次 方便查看

问题显示:

在inc1.ftl与inc2.ftl中的内容分别是:

<#assign username="刘德华">与<#assign username="张学友">

接着我在hello.ftl模版中用include将inc1.ftl包含进来

<#include "/inc/inc1.ftl">
${username}

此刻获取的结果是:刘德华

接着我们在hello.ftl用include将inc1.ftl与inc2.ftl同时进行包含进来

<#include "/inc/inc1.ftl">
<#include "/inc/inc2.ftl">
${username}

此刻获取的值是:张学友

总结:出现这种情况,在两个模版中都分别存在变量名都相同的变量的时候,include包含进来,会进行覆盖,include只时候将其公共的静态文件进行包含,而里面不涉及到内部函数以及变量声明之类的,当涉及到这种问题,我们就要用import进行导入

转载于:https://www.cnblogs.com/moli-/p/6484401.html

freemarker include 和 import相关推荐

  1. #include,#import ,@class 有什么区别?

    #include 和 #import 有相同的效果,只不过#import 能确保头文件只被导入一次,不会引起重复导入.#import能把头文件的所有信息都获取到,包含这个类的变量和方法.而@class ...

  2. flex include和import

    flex include和import ActionScript代码 为了让你的MXML代码可读性增强,你可以在<mx:Script>标签内引用ActionScript代码文件,而不是把大 ...

  3. [转] iOS中@class #import #include 简介

    [转载自:http://blog.csdn.net/chengwuli125/article/details/9705315] 一.解析        很多刚开始学习iOS开发的同学可能在看别人的代码 ...

  4. @class #import辨析 #include

    解析:        很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在 .m 文件中,而 .h 文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把# ...

  5. #include #import @class 讲解

    #include 区分 #include 与#include "x.h"的作用 #include :它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件 . #in ...

  6. freemarker基本语法及实例

    EG.一个对象BOOK 1.输出 ${book.name} 空值判断:${book.name?if_exists }, ${book.name?default('xxx')}//默认值xxx ${ b ...

  7. freemarker程序开发

    1.程序开发入门 1.1 创建配置实例 首先,你应该创建一个freemarker.template.Configuration的实例,然后调整它的设置.Configuration实例是存储FreeMa ...

  8. java中Freemarker list指令详解

    java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...

  9. FreeMarker 快速入门

    FreeMarker 快速入门 FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自 ...

最新文章

  1. 星际2虫王iA加入商汤,担任AI研究员,网友:iA vs AI ,是自己训练跟自己打吗?...
  2. 【Flutter】Flutter 启动白屏问题 ( 问题描述 | 在 launch_background.xml 中设置启动过渡 UI )
  3. Adobe Bridge 2021中文版
  4. mips 内存 linux,MIPS 在linux中的内存映射
  5. HDU1020 Encoding
  6. php算出文件相对路径,php计算两个文件相对路径的方法
  7. Nexys4 DDR + OV7670 摄像头实时监控系统
  8. Apache、tomcat、Nginx常用配置合集
  9. .net 序列化与反序列化
  10. 2.企业安全建设指南(金融行业安全架构与技术实践) --- 金融行业的信息安全
  11. 简单的抓包_学习笔记
  12. 企业微信消息推送脚本
  13. 数据可视化|用热力地图进行数据分析
  14. 求旋转中心【halcon定位】
  15. 电脑右键“打开方式”不见了怎样恢复
  16. dns服务器未响应wifi用不上,为你解答dns服务器未响应导致无法上网怎么办
  17. 阶乘约数【蓝桥杯国赛】
  18. 推荐系统与深度学习(九)——NCF模型原理
  19. IEEE802.16e 协议中LDPC编解码原理说明
  20. Activity has leaked window DecorView@992a599[XXXActivity] that was originally add

热门文章

  1. JS小数位保留两位小数
  2. git是航空母舰:ScrumBoard
  3. Linux解压WINRAR文件
  4. uva 1610 聚会游戏
  5. 保证同一个账号同时只能在一个设备上登录
  6. 阻止应用继承的NTFS权限
  7. Linux全攻略--MySQL数据库配置与管理
  8. HBase 常用Shell命令
  9. DFS Gym 100553J Jokewithpermutation
  10. 进一步认识golang中的并发