[转]Freemarker数据类型转换

转至: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内置函数可以比较灵活地使用自定义格式显示;

时间: 2024-08-07 17:00:58

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

Objective-C数据类型、数据类型转换

数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声明的指针类型,例如: NSAutoreleasePool *pool ,其中,NSAutoreleasePool是一个类,NSAutoreleasePool *是它指针类型或叫对象类型. 4.id类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型,所以刚才的变量可以声明pool也可以声明为id

数据类型转换-运算符

##基本数据类型转换 - 默认顺序是 * byte->short->int->long->float->double - 自动提升规则(针对二元操作符) * 所有的byte,short,char型会自动提升为int型 * 若一个操作数是long类型,则另一个操作数也会转换为long类型,计算的结果类型也是long类型 * float类型,double类型跟long类型的提升规则一样 - 注意 * 默认浮点型是double类型,默认整型是int类型 * 举例说明: ``` fl

Eclipse-运行符-数据类型转换-环境变量配置

1.能够使用Eclipse快捷键 ctrl + /   单行注释:再按一次则取消: ctrl + shift + /  多行注释:  ctrl + shift + \  取消多行注释: ctrl + shift + f  格式化代码 ctrl + d  删除光标所在行 shift + enter 光标所在行的下方增加一行空白,无论光标在该行的什么位置 ctrl + alt + 向下箭头  向下重复增加该行代码 alt + shift + x  运行代码 alt + / 自动补全  (Syso会自

简谈-Python的输入、输出、运算符、数据类型转换

输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中,使用:raw_input(),在python3中不能使用.Python3只有input() 在python2中的input()把用户输入的东西当成式子(字符)了.所以在python2中一般用raw_input() python3中的input与python2中的raw_input()功能一样 运算符

JavaScript中数据类型转换总结

在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = "123"; a = Number(a); 注意: a)如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己. b)如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN. c)如果要转换的内容是空的字符串,那以转换的结果是0. d)如果是其它的字符,那么将来在转换的时候结果是NaN. 2)pars

Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数

如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数!!!dtostrf(),可以轻松实现数据类型from   float   to  char .            get it 格式如下: char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s) 参数

Arduino中数据类型转换 int转换为char 亲测好使,itoa()函数

由于博主最近在做一个项目,需要采集不同传感器的数据,包括float型的HCHO,以及int型的PM2.5数据.但是最终向服务器上传的数据都得转换为char型才能发送,这是借鉴了一个github上面的实例实现了在Arduino上部署socket使之与服务器进行交互. github实例如下: https://github.com/washo4evr/Socket.io-v1.x-Library 在本项目中多次使用了数据类型转换,前文提到了float和double类型转换为char,如下:http:/

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

在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/

javaScript-数据类型和数据类型转换

特别声明,以下为达内科技web前端讲师张东张老师的原创笔记,未经允许,不可转于其他商用,仅供学习. 1. 什么是JavaScript:专门编写网页交互的语言 2. 什么变量:内存中存储*一个*数据的存储空间,再起一个名字 声明: 创建一个变量, var 变量名; 赋值: 将等号右边的数据保存到等号左边的变量中.变量名=值; 取值: 在任何位置使用变量名等效于直接使用变量中的值 特殊:1. 简写:var 变量名=值;——建议 ***2. 声明提前:在正式执行程序前,都会预读所有var声明的变量,集