转至:http://blog.sina.com.cn/s/blog_667ac0360102eaz8.html

// 测试程序

package myTest;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class FtlTest {

public static void main(String[] args) throws Exception {
  Map<String, Object> dataMap = getModel_1();
  Configuration configuration = new Configuration();
  configuration.setDefaultEncoding("utf-8");
  configuration.setClassForTemplateLoading(FtlTest.class, "/ftl/");
  Template template = configuration.getTemplate("test.ftl");
  template.process(dataMap, new BufferedWriter(new OutputStreamWriter(System.out)));
  dataMap = getModel_2();
  template.process(dataMap, new BufferedWriter(new OutputStreamWriter(System.out)));
  dataMap = getModel_3();
  template.process(dataMap, new BufferedWriter(new OutputStreamWriter(System.out)));
 }
 
 public static Map<String, Object> getModel_1() {
  Map<String, Object> dataMap = new HashMap<String, Object>();
  dataMap.put("data_string", "string");
  dataMap.put("data_int", 3);
  dataMap.put("data_float", 3.333);
  dataMap.put("data_boolean", true);
  dataMap.put("data_date", new Date());
  return dataMap;
 }
 public static Map<String, Object> getModel_2() {
  Map<String, Object> dataMap = new HashMap<String, Object>();
  return dataMap;
 }
 public static Map<String, Object> getModel_3() {
  Map<String, Object> dataMap = new HashMap<String, Object>();
  SimpleDateFormat df = new SimpleDateFormat("yyyy");
  Date year = null;
  try {
   year = df.parse("2013");
  } catch (ParseException e) {
   throw new RuntimeException(e);
  }
  dataMap.put("data_date", year);
  return dataMap;
 }
}

// 模板

<#escape x as x?default("")>
数据类型测试
data_string=${data_string}
data_int=${data_int}
data_float=${data_float}
data_boolean=<#if data_boolean?exists>${data_boolean?string}</#if>
data_date=<#if data_date?exists>${data_date?string('yyyy-MM-dd')}</#if>
</#escape>

// 输出

数据类型测试
data_string=string
data_int=3
data_float=3.333
data_boolean=true
data_date=2013-09-25
数据类型测试
data_string=
data_int=
data_float=
data_boolean=
data_date=
数据类型测试
data_string=
data_int=
data_float=
data_boolean=
data_date=2013-01-01

说明:freemarker不会处理null数据,null会报错;使用<#escape标签,来为所有的插值做转换;转换调用了default内置函数,将null填充为“”空字符串;这样,如果在插值处要调用内置函数,就应该先使用<#if标签先判断是否存在了;布尔型、日期型默认不会自动转换为字符串,需要内置函数处理,在调用内置函数前要做是否存在的验证;最后,以上测试,日期型类型转换是根据Date类型来转换的,string内置函数可以比较灵活地使用自定义格式显示;

[转]Freemarker数据类型转换的更多相关文章

  1. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

  2. Sql Server函数全解<三>数据类型转换函数和文本图像函数

    阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...

  3. JS 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  4. 使用变量 数据类型转换 逻辑控制语句(begin ...end; case...end; if...else; while)

    一:变量 变量分为局部变量和全局变量  (全局变量是系统自定的,是不可手动给值的,若想自己定义全局变量可考虑创建全局临时表!) 局部变量的定义:  declare @变量名  数据类型 (局部变量只能 ...

  5. Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)

    上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...

  6. Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)

    上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...

  7. Util应用程序框架公共操作类(一):数据类型转换公共操作类(介绍篇)

    本系列文章将介绍一些对初学者有帮助的辅助类,这些辅助类本身并没有什么稀奇之处,如何能发现需要封装它们可能更加重要,所谓授之以鱼不如授之以渔,掌握封装公共操作类的技巧才是关键,我会详细说明创建这些类的动 ...

  8. Sql Server函数全解(三)数据类型转换函数和文本图像函数

    一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型和字符类型,隐士 ...

  9. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

随机推荐

  1. max-height,min-height在IE下不支持的解决方法

    max-height,min-height在IE下不支持的解决方法 max-width:160px; max-height:160px; _width:expression(this.width &g ...

  2. 面向函数范式编程(Functional programming)

    函数编程(简称FP)不只代指Haskell Scala等之类的语言,还表示一种编程思维,软件思考方式,也称面向函数编程. 编程的本质是组合,组合的本质是范畴Category,而范畴是函数的组合. 首先 ...

  3. Raphael 目标点沿路径不断移动

    <!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8" ...

  4. OK335xS psplash make-image-header.sh hacking

    /***************************************************************************** * OK335xS psplash mak ...

  5. 锋利的jQuery读书笔记---选择器

    前段时间入手了锋利的jQuery(第二版),想着加强下自己的js能力,可前段时间一只在熟悉Spring和Hibernate.最近抽时间开始读这本书了,随便也做了些记录. 读书的过程是边看边代码测试,所 ...

  6. HDU 5365 Run

    题意:给n个整点,问用其中若干个做顶点能够成多少个正三角形或正四边形或正五边形或正六边形. 解法:出题人说 地球人都知道整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正 ...

  7. HDU 5879 Cure

    Cure Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. [Papers]NSE, $\n u_3$, Lebesgue space, [Pokorny, EJDE, 2003; Zhou, MAA, 2002]

    $$\bex \n u_3\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{3}{2},\quad 2\leq q\leq \i ...

  9. 滑动菜单栏开源项目SlidingMenu的使用

    一.SlidingMenu简介相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了这 ...

  10. Dev gridControl 添加表标题

    1.OptionsView ->ShowViewCaption = True 2.ViewCaption = "标题"