文档章节

Freemarker 学习知识点(一)

不能讲的秘密
 不能讲的秘密
发布于 2017/01/24 15:56
字数 510
阅读 13
收藏 0

Freemarker 学习知识点(一)

Freemarker是什么

Freemarker是模板组件,就是将一个数据(Data) 和一个模板(Template)进行组装(渲染),最后输出一段文本。 例如,一个HTML

<html>
<head>
<title>${title}</title>
</head>
<body>
${content}
</body>
</html>

在java代码中,map.put("title","我的主题"); map.put("content","我的内容"); 通过Freemarker与这段HTML的组合,就会输出:

<html>
<head>
<title>我的主题</title>
</head>
<body>
我的内容
</body>
</html>

这只是一个最简单的示例,还有更强大的功能在里面。

###几个基本概念

  • 内部插值 interprolations ,就是${表达式}
  • FTL标签 就是<#if .....></#if> 这是系统标签,用户自定义标签是<@.....>。
  • 注释 <#-- -->中间的内容都不会作为结果输出
  • 指令,也就是FTL标签,如if指令,就是<#if ...>

###指令

  • if 指令
<#if fruits.apple.price lte 5.0 >Apple is cheap<#else>Apple is not cheap today.</#if>
  • list指令
<table>
<#list fruits as item>
<tr><td>${item.name}</td><td>${item.price}</td></tr>
</#list>
</table>

fruits结果输出内容就如

<table>
<tr><td>Apple</td><td>4.9</td></tr>
<tr><td>Pear</td><td>4.6</td></tr>
</table>
  • include指令 插入外部文件 如<#include "/foot.html">,将foot.html插入本文件内

###变量不存在怎么办? 如果有一个变量不存在,或者是NULL,对Freemarker来说,就是变量不存在。 Freemarker在处理Template的时候会出错,这个时候怎么办呢? 有两个办法:

  1. ${user!默认值},对就是这样。如果user不存在或是NULL,就以默认值代替。 ${user!}如果user不存在,就不会输出内容。
  2. <#if user??>........</if>,与if指令一起使用,变量后面加2个?问号,如果user不存在,if指令内的内容不会执行。

对于多级变量,如插值 ${user.dept.company!"无"},仅当company为空值时,才会输出“无”,如果user或dept为空值,那么就会报错“未定义的变量”。如果要当它他任意一个是NULL时,都输出一个“无”,可以改写为${(user.dept.company)!"无"},对的,就是这样。 对于 user.dept.company?? 也是一样的处理方法。

© 著作权归作者所有

不能讲的秘密
粉丝 1
博文 21
码字总数 11075
作品 0
杭州
私信 提问
FreeMarker在eclipse中的入门例子

刚接触FreeMarker时,只是简单的了解FreeMarker的一些概念及工作原理,至于如何使用FreeMarker还不是非常清楚。随着学习的深入,才渐渐对FreeMarker有了更深入的理解。本文将从基础应用着手,...

oecp
2011/05/16
650
0
FreeMarker在eclipse中的入门例子

今天海浪为大家分享一个FreeMarker在eclipse中的入门例子。 一、在eclipse中创建FreeMarker模板 在FreeMarker中模板的概念就是:包含一些由${…}包围的特殊代码的文件。这些特殊代码是FreeM...

oecp
2011/04/26
922
0
freemaker开发学习《一》

 FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.FreeMarker可以提供昜好的团队协作,对于界面开发人...

xiaml
2014/04/25
297
0
求教!对freemaker的一些不解之处、、、

本人初学freemarker,了解freemarker的基本语法,但也只知道freemarker是用来生成静态页面的模板技术。最近做了一个小例子学习了一下freemarker,效果是看到了,但还是有很多不明白的地方: ...

liujiduo
2013/06/16
730
3
重写了JFinal的demo,加入了实际项目应用的封装

刚刚结束一个网站的开发(http://www.cnkuke.com)把项目中常用的freemarker宏和一些封装类分享给大家,希望能帮助初次使用JFinal做项目的同学少走弯路。 封装如下: 一、freemarker封装 分页...

axhack
2013/08/01
2.7K
15

没有更多内容

加载失败,请刷新页面

加载更多

关于运维,该怎么决定它的方向,这个似工作又似兴趣的存在

我之前主要从事网络、桌面、机房管理等相关工作,这些工作使我迷惘,这应该是大多数运维人都经历过的过程; 18年国庆,我从国内前三的消费金融公司裸辞,下海创业,就是想要摆脱这样的困境。...

网络小虾米
13分钟前
3
0
Java Timer的用法

Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("11232"); } }, 200000 , 1000); public void schedule(TimerTask task, long delay......

林词
17分钟前
3
0
使用js动态加载外部js文件以及动态创建script脚本

动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该DOM动态添加的脚本。和操作HTML元素一样,创建动态脚本也有两种方式:插入外部文件和直接插入JavaScript代码。 动态加载外的外...

Bing309
24分钟前
2
0
从零开始入门 K8s | Kubernetes 网络概念及策略控制

作者 | 阿里巴巴高级技术专家 叶磊 一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Kubernetes 对于网络具体实现方案,没有什么限制,也没有给出特...

阿里巴巴云原生
28分钟前
2
0
天气获取

本文转载于:专业的前端网站➨天气获取 $.get("http://wthrcdn.etouch.cn/WeatherApi", { citykey: cityCode }, function (d) { //创建文档对象 var parser = new ......

前端老手
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部