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. SuperSocket内置的命令行协议

    内置的命令行协议(接受自定义,分隔符为“:”,“,”): 命令行协议定义了每个请求必须以回车换行结尾 "\r\n". 由于 SuperSocket 中内置的命令行协议用空格来分割请 ...

  2. 【JQ】toggle / slideToggle / fadeToggle 的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Python--day70--csrf简单用法、 跨站请求伪造和csrf_token使用

    1,csrf简单用法 2,Django里面的setting加入了防跨站伪造:这段代码帮你生成特殊字符串,帮你塞到html页面中来 3,csrf_token使用:

  4. hdu 4146 Flip Game

    Flip Game Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  5. hdu 1254 推箱子(嵌套搜索,bfs中有dfs)

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  6. H3C 单区域OSPF配置示例一(续)

  7. 2019-8-30-C#-反射调用私有事件

    title author date CreateTime categories C# 反射调用私有事件 lindexi 2019-08-30 08:52:57 +0800 2018-09-19 20: ...

  8. java 文件过滤器 java.io.FilenameFilter

    File 类里有方法: String[] list(FilenameFilter filter)    返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录. File ...

  9. VC++ CMsflexgrid 使用

    引用actvie x :microsoft CMsflexgrid; BOOL CCalibrationCoordsDisDlg::OnInitDialog() { CDialog::OnInitDi ...

  10. IE显示 “Promise”未定义,vue项目兼容ie的两种方案

    第一种方法: 直接在html中加入js链接: <script src = "https://cdn.polyfill.io/v2/polyfill.min.js">&l ...