包含文件

 <a href="${latestProduct.url}">${latestProduct.name}</a>

基本语法

  • ${...}:FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为interpolation(插值)。
  • 注释:注释和HTML的注释也很相似,但是它们使用<#-- and -->来标识。不像HTML注释那样,FTL注释不会出现在输出中(不出现在访问者的页面中),因为FreeMarker会跳过它们。
  • FTL标签(FreeMarker模板的语言标签):FTL标签和HTML标签有一些相似之处,但是它们是FreeMarker的指令,是不会在输出中打印的。这些标签的名字以#开头。(用户自定义的FTL标签则需要使用@来代替#

内置函数

内置函数很像子变量(也像Java中的方法),它们并不是数据模型中的东西,是FreeMarker在数值上添加的。为了清晰子变量是哪部分,使用?(问号)代替,.(点)来访问它们。常用内建函数的示例:

  • user?html给出user的HTML转义版本,比如&会由&amp;来代替。
  • user?upper_case给出user值的大写版本(比如“JOHN DOE”来替代“John Doe”)
  • animal.name?cap_first给出animal.name的首字母大写版本(比如“Mouse”来替代“mouse”)
  • user?length给出user值中字符的数量(对于“John Doe”来说就是8)
  • animals?size给出animals序列中项目的个数
  • 如果在<#list animals as animal>和对应的</#list>标签中:
    • animal?index给出了在animals中基于0开始的animal的索引值
    • animal?counter也像index,但是给出的是基于1的索引值
    • animal?item_parity基于当前计数的奇偶性,给出字符串“odd”或“even”。在给不同行着色时非常有用,比如在<td class="${animal?item_parity}Row">中。

一些内建函数需要参数来指定行为,比如:

  • animal.protected?string("Y", "N")基于animal.protected的布尔值来返回字符串“Y”或“N”。
  • animal?item_cycle('lightRow','darkRow')是item_parity更为常用的变体形式。
  • fruits?join(", ")通过连接所有项,将列表转换为字符串,在每个项之间插入参数分隔符(比如“orange,banana”)
  • user?starts_with("J")根据user的首字母是否是“J”返回布尔值true或false。

内建函数应用可以链式操作,比如user?upper_case?html会先转换用户名到大写形式,之后再进行HTML转义,和链式使用.(点)一样

空变量

不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个 !(感叹号)和默认值。像下面的这个例子,当user不存在于数据模型时,模板将会将user的值表示为字符串 “visitor”。(当 user 存在时,模板就会表现出 ${user} 的值):

<h1>Welcome ${user!"visitor"}!</h1>

一篇很全面的freemarker教程

Freemaker语法的更多相关文章

  1. Freemaker生成复杂样式图片并无文件损坏的excel

    Freemaker生成复杂样式图片并无文件损坏的excel 参考Freemarker整合poi导出带有图片的Excel教程,优化代码实现 功能介绍:1.支持Freemarker导出Excel的所有功能 ...

  2. java 实现Excel压缩成Zip导出

    1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...

  3. webstorm识别 ftl文件

    webstorm对freemaker语法是原生支持的,也不需要安装什么插件,你可以直接在webstorm新建个File Types即可 file->settings->file types ...

  4. freemaker的基本语法

    先来解释一下freemaker的基本语法了,<# ... > 中存放所有freemaker的内容,之外的内容全部原样输出.<@ ... /> 是函数调用两个定界符内的内容中,第 ...

  5. Freemaker FTL指令常用标签及语法

    https://blog.csdn.net/pengpengpeng85/article/details/52070602 FTL指令常用标签及语法 注意:使用freemaker,要求所有标签必须闭合 ...

  6. freemaker基础语法

      1.freemarker中Request,Session的用法:java块:request.getSession().setAttribute("qq","http: ...

  7. 【FreeMaker】FreeMaker学习-基础

    转载请标明出处:http://www.cnblogs.com/ssslinppp 阅读目录 -04-08 08:08:08 Pacific Daylight Time Tue, Apr 8, '03 ...

  8. 表现层技术以及Freemaker使用教程

    表现出计数以及Freemaker详解 在java领域,表现层技术主要有三种:jsp.freemarker.velocity.jsp是大家最熟悉的技术优点: 1.功能强大,可以写java代码 2.支持j ...

  9. java 下载word freemaker

    网上有很多优质的博文了,这里这篇博客就是记录一下字自己,写demo的历程,坑和收获 在java程序中下载word 有6中方式,此处省略(嘻嘻),不过大家公认的是 freemaker 和 PageOff ...

随机推荐

  1. Spring Boot系列教程七:Spring boot集成MyBatis

    一.创建项目         项目名称为 “springboot_mybatis_demo”,创建过程中勾选 “Web”,“MyBatis”,“MySQL”,第一次创建Maven需要下载依赖包(耐心等 ...

  2. CF785D Anton and School - 2 解题报告

    CF785D Anton and School - 2 题意:给定一个长度\(\le 2 \times 10e5\)由'('和')'组成的字符串,问有多少个子串(可以不连续),前半部分是由\('('\ ...

  3. 洛谷p1017 进制转换(2000noip提高组)

    洛谷P1017 进制转换 题意分析 给出一个数n,要求用负R进制显示. n∈[-32768,32767].R ∈[-20,-2] 考察的是负进制数的转换,需要理解短除法. 看到这道题的时候,我是比较蒙 ...

  4. 【loj2461】【2018集训队互测Day 1】完美的队列

    #2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...

  5. 【arc076E】Connected?

    Portal -->arc076E Description 给你一个\(R*C\)的矩形,矩形中某些格子的端点上填了\(1\sim n\)这\(n\)个数字,每个数字出现了恰好两遍,现在要将每一 ...

  6. mac命令行快捷键

    其实不想每次输入host和user,可以在 ~/.ssh/config文件写上配置alias信息,以后ssh的时候根据alias即可.如: Host alias-name HostName ip_ad ...

  7. lnmp集成环境Access Denied的问题

    在你的php.ini配置文件中,设置cgi.fix_pathinfo=1

  8. libiop通讯流程和api讲解

    上一篇讲到了libiop基本结构,这次根据libiop提供的test跟踪下消息和运行流程 void echo_server_test() { ; iop_base_t *); printf(" ...

  9. JS函数表达的几种写法

    arguments数组形式的  用于函数  比如不知道参数有多少个或者不固定那么用到arguments function show(){ //alert(arguments.;length); ale ...

  10. 2.redis设计与实现--链表

    1.链表节点: 2.链表: 3.总结