java中Freemarker include指令详解
java Freemarker中include指令用于导入文件,它可以在模版中插入其他的静态文件,或者是freemarker模版,这里通常引入的都是项目的公共部分,比如说网站的头部,以及版权信息等等。
定义
<#include path> <#include path options>
path: 要包含文件的路径。可以使用相对路径和绝对路径。通常使用/(斜杠)来分割路径成分。(用其他话说, 它不用是一个固定的字符串,它也可以是像 profile.baseDir + "/menu.ftl" 这样的东西。)
options:一个或多个这样的选项(encoding=encoding, parse=parse)
encoding:算作是字符串的表达式。被包含文件从包含的文件继承的编码方式。(ISO-8859-2、UTF-8、GB2312)
parse:算作是布尔值的表达式。默认是true。如果它为真,那么被包含的文件将会当做FTL来解析,否则整个文件将被当成简单文本来处理。(也就是说不会在其中查找FreeMarker结构)
ignore_missing: 算作是布尔值的表达式
例子
//父页面ftl <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <#include "/inc/top.ftl"/> 姓名:${student.studentName} 性别:${student.studentSex} 年龄:${student.studentAge} 生日:${(student.studentBirthday)?string("yyyy-MM-dd")} 网站地址:${student.studentAddr} QQ:${student.studentQQ} <#if student.studentAge lt 12> ${student.studentName}不是一个初中生 <#elseif student.studentAge lt 15> ${student.studentName}不是一个高中生 <#elseif student.studentAge lt 18> ${student.studentName}不是一个大学生 <#else> ${student.studentName}是一个大学生 </#if> </body> </html>
//子页面ftl <h1>欢迎,进入学生管理系统!</h1>
Map < String,Object > root = null; @Test public void testStudent() { //创建数据模型 root = new HashMap < String, Object > (); root.put("student", new Student("张三丰", "男", 16, new Date(1988 - 12 - 12), "http://www.51gjie.com", 78451214)); student("student.ftl"); studentFile("student.ftl", "student1.html"); } private void student(String name) { ft.printFtl(name, root); } private void studentFile(String name, String fileName) { ft.printFile(name, root, fileName); }
运行结果生成HTML页面:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <h1>欢迎,进入学生管理系统!</h1> 姓名:张三丰 性别:男 年龄:16 生日:1970-01-01 网站地址:http://www.51gjie.com QQ:78,451,214 张三丰不是一个大学生 </body> </html>总结
1. 被包含模板的输出格式是在include标签出现的位置插入的。
2. include被包含的文件和包含它的模板共享变量,就好像是被复制粘贴进去的一样。
3. 这个指令不可与JSP(Servlet)的include搞混,因为它不涉及到Servlet容器中,只是处理另外一个FreeMarker模板,不能"离开"FreeMarker。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。