freemarker 的基础使用二

ftl 文件

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<#-- 定义变量-->
<#assign username="张三">
${username}
<#-- 如果定义相同的 变量, 变量的值会被覆盖, 会以最后的值为准-->
<#assign num=10>
${num+11}
<#assign b=true>
<#-- 不能直接输出数字或者字符串以外的东西 否则都会报错, 需要转化成字符串才能输出, 使用 XXX?string 可以完成字符串的转换-->
${b?string}
<#-- 这里三个问号 :前两个 判断是否为空, 后一个按照String输出 后面这个括号可有可无, 如果没有的话,就按照
本值输出, 如果有的话, 类似于三目运算逻辑, 进行替换输出
-->
${(a.ss)???string("true","false")}
<#-- 时间输出 日期不能直接输出, 需要转换成字符串 按照括号后面的格式进行输出-->
${now?string("yyyy-MM-dd HH:mm:ss")}
<#-- 字符串输出拼接 两种方式-->
${" welcome:"+username}
${"welcome:${username}"} <#-- 字符串转换成日期
date 用来转换日期, datetime 用来转换日期时间, time用来转换时间
-->
${"1979-25-45"?date("yyyy-MM-dd")}
<#assign bir = "1997-03-04 12:34:23"?datetime("yyyy-MM-dd HH:mm:ss")>
${"字符串转时间"+bir}
</body>
</html>

 

@Test
public void test07(){
Map<String,Object> root = new HashMap<String, Object>();
root.put("now", new Date());
frr.print("07.ftl", root);
} @Test
public void test06(){
// 此时 user 对象没有group的值, 如果前台要取值,就会报错, freemarker 不具备处理空值
// 需要自己处理空值
Map<String,Object> root = new HashMap<String, Object>();
root.put("user",new User(1, "地点", 19));
frr.fprint("06.ftl", root, "06.html");
}

Freemarker 的基础使用 (二)的更多相关文章

  1. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  2. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  3. RequireJS基础(二)

    上一篇是把整个jQuery库作为一个模块.这篇来写一个自己的模块:选择器. 为演示方便这里仅实现常用的三种选择器id,className,attribute. RequireJS使用define来定义 ...

  4. Servlet基础(二) Servlet的生命周期

    Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...

  5. 好好写,好好干-PHP基础(二)

    hi 好久没写,昨儿一写,感觉还是有人看的,至少是有一两个评论的~~好好干! 每天需要坚持的就那么4件事儿:写这个,学一点法语,看会儿书,锻炼.单身狗也有好处. 1.PHP 一.PHP基础(二) 1. ...

  6. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  7. MySQL基础(二)——DDL语句

    MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...

  8. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  9. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

随机推荐

  1. hdu 2986 Ballot evaluation (Simulation)

    Problem - 2986 之前在华工赛见过的一道简单的模拟,用map轻松干掉.为了精确,要全程用整型比较.轻松1y~ 代码如下: #include <cstdio> #include ...

  2. 打开phpstorm 的terminal 工具框的快捷键 alt+F12

    打开phpstorm 的terminal 工具框的快捷键 alt+F12 Alt + #[0-9] 打开相应的工具窗口

  3. 用mysql查询某字段是否有索引

    可以使用SHOW INDEX FROM table_name来查看表的索引,从而查看字段的索引:查询结果中table为表名,key_name为索引名,Column_name为列名

  4. java throw

    自行抛出一个异常对象,抛出异常类的对象: 若throw抛出的是Runtime异常: 程序可以显示使用try...catch来捕获并处理,也可以不管,直接交给方法调用者处理: 若throw抛出Check ...

  5. urlencode()与urldecode()

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...

  6. [转]【转】大型高性能ASP.NET系统架构设计

    大型高性能ASP.NET系统架构设计 大型动态应用系统平台主要是针对于大流量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳 ...

  7. H3C RIPv1的缺点

  8. UVA 1625 "Color Length" (基础DP)

    传送门 •参考资料 [1]:HopeForBetter •题意 •题解(by 紫书) •我的理解 用了一上午的时间,参考紫书+上述博文,终于解决了疑惑: 定义第一个颜色序列用串 s 表示,第二个用串 ...

  9. linux 自旋锁 API 简介

    自旋锁原语要求的包含文件是 <linux/spinlock.h>. 一个实际的锁有类型 spinlock_t. 象任何其他数据结构, 一个 自旋锁必须初始化. 这个初始化可以在编译时完成, ...

  10. Java动态编译优化——提升编译速度(N倍)

    一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...