http://blog.csdn.net/chang_li/article/details/51913105

在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

一、FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}

  1. <pre name="code" class="html">${book.name?if_exists } //用于判断如果存在,就输出这个值
  2. ${book.name!"xxx"}//默认值xxx
  3. ${book.date?string('yyyy-MM-dd')} //日期格式
  4. ${book?string.number} 20 //三种不同的数字格式
  5. ${book?string.currency} <#-- $20.00 -->
  6. ${book?string.percent} <#-- 20% -->
  7. ${.now?datetime}//当前时间戳


二、FreeMarker提供两个运算符来避免空值:1. !: 指定缺失变量的默认值;2. ??:判断变量是否存在。!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。例子:

  1. <pre name="code" class="html"><#-- ${sss} 没有定义这个变量,会报异常! -->
  2. ${sss!} <#--没有定义这个变量,默认值是空字符串! -->
  3. ${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->

三、??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。

将它和 if 指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:

  1. <#if user??><h1>Welcome ${user}!</h1></#if>

四、Freemarker中对于javabean的处理跟EL表达式一致,类型可自动转化!非常方便!
有一点需要注意: ${..}只能用于文本部分作为字符串输出,不能用于判断真假值
也就是不能这么写:<#if ${isBig}>Wow!</#if> ,应为<#if isBig>Wow!</#if>

五、对list进行遍历以及if else判断

  1. 1)<table  width="100%">
  2. <#list investList as item>
  3. <tr>
  4. <td align="left" style="width:50%!important;">
  5. ${item.userName}<br>${item.addTime?string("yyyy-MM-ddHH:mm:ss")}
  6. </td>
  7. <td align="right" style="width:50% !important;">${item.money?string('0.00')}元<br/>
  8. <#if item.tenderType == 0>网站投标
  9. <#elseif item.tenderType == 1>自动投标
  10. <#elseif item.tenderType == 2>手机投标
  11. </#if>
  12. </td>
  13. </tr>
  14. </#list>
  15. </table>

2))

  1. <select name="awardTypeId" class="type">
  2. <option value="0" selected="selected">全部</option>
  3. <#if typeList??>
  4. <#list typeList as type>
  5. <option value="${type.id!}" >${type.name!}</option>
  6. </#list>
  7. </select>

3)assign指令用于为该模板页面创建或替换一个顶层变量,

  1. <#assign x="Hello ${user}!">

4)

  1. <#if data.list?size > 0>
 
 

freemarker插值的更多相关文章

  1. Freemarker中遍历List以及内置函数使用

    在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户. 那么在Freemarker中如何遍历List,并对List中数据进行适当的排序呢?一. Free ...

  2. java 根据word xml模板生成word

    这里用的是poi相关jar包以及freemarker插值技术实现,poi相关jar包这里不再述说 1,编辑word并保存为xml 2,把xml后缀改为ftl文件 3,前端代码 // alert(jso ...

  3. freemarker 取值(插值)(转)

    Java数据模型 1)基本数据类型取值 八种基本的java类型:byte.short.int.long:float,double:char:boolean 对应的封装类型:Byte.Short.Int ...

  4. FreeMarker的基础语法

    FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...

  5. FreeMarker模板开发指南知识点梳理

    freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...

  6. Freemarker常用技巧

    1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. <= lte. > gt. >= gte < ...

  7. FreeMarker标签与使用

    模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选 ...

  8. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  9. [转]一篇很全面的freemarker教程

    copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...

随机推荐

  1. C# 关闭显示器(显示)

    1.先引入DllImport所在的名称空间 using System.Runtime.InteropServices; 2.引入方法 [DllImport("user32.dll" ...

  2. VC2012编译CEF3-转

    原文地址:http://blog.csdn.net/tiplip/article/details/42047815 下载 代码下载:http://cefbuilds.com/,CEF 3.2556.1 ...

  3. Linux服务器修改时区时间

    时间的一致性很关键,对于日志的分析和程序的对接都至关重要! 01.tzselect 修改时区 可以使用命令 tzselect,修改时区.操作示例: $ tzselect Please identify ...

  4. TCP Socket 粘包

     这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题.发现自己不是非常清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接: 1.长连接 Client方与Server ...

  5. 【微信小程序】详解wx:if elif else的用法(搭配view、block)

    1.搭配view <view wx:if="{{boolean==true}}"> <view class="bg_black">< ...

  6. 使用 Feed43

    1.打开 Feed43 2.将标题.链接,时间等变化的字段删去用 {%} 代替.将固定且多余的字段删去用 {*} 代替.注意,源码中有换行的地方均需要添加{*} . 3.活学活用

  7. zabbix监控redis连接情况

    配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加  Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对red ...

  8. Matlab调用返回游标的存储过程的分析和处理

    2.Matlab调用Oracl带游标参数输出的存储过程 笔者也是将工作之中遇到的问题进行了搜集与整理,才完成该文的编写,希望能帮助到有需要的朋友. 2.1.PLSQL中的存储过程 PROCEDURE ...

  9. no !/ in spec

    问题: 在学习hibernate的过程中涉及到hibernate.cfg.xml和hibernate.hbm.xml配置文件的编写,写完之后配置文件出现黄色感叹号,鼠标悬停在感叹号上时显示no !/ ...

  10. 【LeetCode】49. Anagrams (2 solutions)

    Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs ...