freemarker

在复杂页面上(包含大量判断、日期金额格式化)的页面上,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>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值