freemarker
来源:互联网 发布:define js 模块 编辑:程序博客网 时间:2024/06/14 09:33
在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
一、FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}
<pre name="code" class="html">${book.name?if_exists } //用于判断如果存在,就输出这个值 ${book.name!"xxx"}//默认值xxx ${book.date?string('yyyy-MM-dd')} //日期格式 ${book?string.number} 20 //三种不同的数字格式 ${book?string.currency} <#-- $20.00 --> ${book?string.percent} <#-- 20% -->${.now?datetime}//当前时间戳
二、FreeMarker提供两个运算符来避免空值:1. !: 指定缺失变量的默认值;2. ??:判断变量是否存在。!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。例子:
<pre name="code" class="html"><#-- ${sss} 没有定义这个变量,会报异常! -->${sss!} <#--没有定义这个变量,默认值是空字符串! -->${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->三、??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。
将它和 if 指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:
<#if user??><h1>Welcome ${user}!</h1></#if>
四、Freemarker中对于javabean的处理跟EL表达式一致,类型可自动转化!非常方便!
有一点需要注意: ${..}只能用于文本部分作为字符串输出,不能用于判断真假值
也就是不能这么写:<#if ${isBig}>Wow!</#if> ,应为<#if isBig>Wow!</#if>
五、对list进行遍历以及if else判断
1)<table width="100%"><#list investList as item><tr><td align="left" style="width:50%!important;">${item.userName}<br>${item.addTime?string("yyyy-MM-ddHH:mm:ss")}</td><td align="right" style="width:50% !important;">${item.money?string('0.00')}元<br/><#if item.tenderType == 0>网站投标 <#elseif item.tenderType == 1>自动投标<#elseif item.tenderType == 2>手机投标 </#if> </td></tr></#list></table>
2))
<select name="awardTypeId" class="type"><option value="0" selected="selected">全部</option><#if typeList??><#list typeList as type><option value="${type.id!}" >${type.name!}</option></#list></select>
3)assign指令用于为该模板页面创建或替换一个顶层变量,
<#assign x="Hello ${user}!">4)
<#if data.list?size > 0>
0 0
- freemarker
- freemarker
- FreeMarker
- FreeMarker
- freemarker
- freemarker
- freemarker
- Freemarker
- freemarker
- freemarker
- FreeMarker
- freeMarker
- freemarker
- FreeMarker
- FreeMarker
- FreeMarker
- FreeMarker
- freemarker
- Hdu 3812 Sea Sky (模拟_搜索)
- 欢迎使用CSDN-markdown编辑器
- WebSite for Developers
- 完全打开lk log的方法
- java引用传递值传递的"深入"解析与c++中的值传递
- freemarker
- 两种方法实现用CSS切割图片只取图片中一部分
- linux文件比较命令
- C++实现最长公共子序列和最长公共子串
- Nginx/Tengine
- 堆排序
- php 杂项函数总结
- 多进程zmq通信项目 MultiProCom + 期货基础知识
- 测试岗位面试时遇到的一些概念总结