上次使用 Apache 的 FreeMarker 已是一年半前,现在又有页面需要生成,翻了翻原来项目里的模板,语法基本忘光。而且只做了如何简单使用的笔记,这次就把最常用的一些语法也写一写,以便备用,翻手册范围太广。
<ul>
<#list productList as product>
<li>${product_index+1} ${product.goodsName}</li>
</#list>
</ul>
<!--需要排序时,加个sort_by字段-->
<ul>
<#list productList?sort_by("productName") as product>
<li>${product_index+1} ${product.goodsName}</li>
</#list>
</ul>
<!--如果list集合不存在,直接在循环里加个else即可,不需要单独做判断-->
<#list sequence as item>
Part repeated for each item
<#else>
Part executed when there are 0 items
</#list>
<!--项目的个数-->
${list?size}
productList 是从后台传递过来的list集合;
product_index 用于获取当前索引,从0开始;
<#if goodsName??>
goodsNamefound
<#else>
No goodsName found
</#if>
?? 两个问号神写法!
<#if goodsName??>
goodsNamefound
<#elseif goodsName=='aaa' >
aaa
<#else>
No goodsName found
</#if>
<!--没有赋值,可以设置默认值的,那就设置默认值吧!-->
${product.keysword!''}
默认值可以这样设置,太简洁了吧!
${testString?html}
后面加个html轻松搞定。
<!--转成大写-->
${testString?upper_case}
<!--转成大写并输出原始html-->
${testString?upper_case?html}
<!--字符串的长度-->
${user?length}
<!--首字母小写,在生成controller类似的class文件时非常有用-->
${testString?uncap_first}
<!--首字母大写 -->
${testString?cap_first}
<!--使用assign关键字定义-->
<#assign x=1 >
${x}
<!--定义中包含特殊符号{}-->
<#assign strleft="${">
<#assign strright="}">
//这一段比较特殊,是写在js里面的,原本是想表达 var model= m o d e l , 但 是 又 不 能 直 接 写 成 {model},但是又不能直接写成 model,但是又不能直接写成{model},这样在生成时,会被模板解析,所以需要换个写法;
var model = [[${strleft}model${strright}]];
${significance.publishDate?string("yyyy-MM-dd")}
<#if currentPage == 1 >
<li class="previous_s"><a href="../sp/videoList.html" >上一页</a></li>
<#elseif currentPage gt 1 >
<li class="previous_s"><a href="../sp/videoList${currentPage-1}.html" >上一页</a></li>
</#if>
<#list 0..pageSize-1 as page>
<#if currentPage == page >
<li class="pages_solid">${page+1}</li>
<#elseif page == 0>
<li class="pages_hollow"><a href="../sp/videoList.html" >${page+1}</a></li>
<#else>
<li class="pages_hollow"><a href="../sp/videoList${page}.html" >${page+1}</a></li>
</#if>
</#list>
<#if currentPage lt pageSize-1 >
<li class="next"><a href="../sp/videoList${currentPage+1}.html">下一页</a></li>
</#if>
为了防止大于号,小于号报错,大于号可以用 gt 代替,小于号可以用 lt 代替,很方便吧!
更多用法,参考官方文档:
https://freemarker.apache.org/
http://freemarker.foofun.cn/index.html