freemarker include 和 import
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相关推荐
- #include,#import ,@class 有什么区别?
#include 和 #import 有相同的效果,只不过#import 能确保头文件只被导入一次,不会引起重复导入.#import能把头文件的所有信息都获取到,包含这个类的变量和方法.而@class ...
- flex include和import
flex include和import ActionScript代码 为了让你的MXML代码可读性增强,你可以在<mx:Script>标签内引用ActionScript代码文件,而不是把大 ...
- [转] iOS中@class #import #include 简介
[转载自:http://blog.csdn.net/chengwuli125/article/details/9705315] 一.解析 很多刚开始学习iOS开发的同学可能在看别人的代码 ...
- @class #import辨析 #include
解析: 很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在 .m 文件中,而 .h 文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把# ...
- #include #import @class 讲解
#include 区分 #include 与#include "x.h"的作用 #include :它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件 . #in ...
- freemarker基本语法及实例
EG.一个对象BOOK 1.输出 ${book.name} 空值判断:${book.name?if_exists }, ${book.name?default('xxx')}//默认值xxx ${ b ...
- freemarker程序开发
1.程序开发入门 1.1 创建配置实例 首先,你应该创建一个freemarker.template.Configuration的实例,然后调整它的设置.Configuration实例是存储FreeMa ...
- java中Freemarker list指令详解
java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...
- FreeMarker 快速入门
FreeMarker 快速入门 FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自 ...
最新文章
- 星际2虫王iA加入商汤,担任AI研究员,网友:iA vs AI ,是自己训练跟自己打吗?...
- 【Flutter】Flutter 启动白屏问题 ( 问题描述 | 在 launch_background.xml 中设置启动过渡 UI )
- Adobe Bridge 2021中文版
- mips 内存 linux,MIPS 在linux中的内存映射
- HDU1020 Encoding
- php算出文件相对路径,php计算两个文件相对路径的方法
- Nexys4 DDR + OV7670 摄像头实时监控系统
- Apache、tomcat、Nginx常用配置合集
- .net 序列化与反序列化
- 2.企业安全建设指南(金融行业安全架构与技术实践) --- 金融行业的信息安全
- 简单的抓包_学习笔记
- 企业微信消息推送脚本
- 数据可视化|用热力地图进行数据分析
- 求旋转中心【halcon定位】
- 电脑右键“打开方式”不见了怎样恢复
- dns服务器未响应wifi用不上,为你解答dns服务器未响应导致无法上网怎么办
- 阶乘约数【蓝桥杯国赛】
- 推荐系统与深度学习(九)——NCF模型原理
- IEEE802.16e 协议中LDPC编解码原理说明
- Activity has leaked window DecorView@992a599[XXXActivity] that was originally add