freemaaker 基本语法测试整理

测试类

 

/**
 * HelloFreeMaker.java
 * com.lin.freemaker
 * zlj
 * Jul 18, 2012   
 *
 */


package com.lin.freemaker;

import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.lin.bean.Student;

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

/**
 * Class HelloFreeMaker
 * @author zlj
 * @version
 * @Date Jul 18, 2012 2:12:41 PM
 */

public class HelloFreeMaker {
 private Configuration cfg;
 public void init() throws IOException{
  cfg=new Configuration();
  File file=new File("src/templates");
  if(!file.exists()){
   file.mkdir();
  }
  cfg.setDirectoryForTemplateLoading(new File("src/templates"));
 }
 public void process()throws Exception{
  Map<String, Object> root=new HashMap<String, Object>();
  List<Student> list=new ArrayList<Student>();
  list.add(new Student("123","000"));
  list.add(new Student("234","001"));
  list.add(new Student("456","001"));
  root.put("name", "zlj");
  root.put("msg", "FreeMaker实例");
  root.put("list", list);
  Template t=cfg.getTemplate("test.ftl");
  t.process(root, new OutputStreamWriter(System.out));
 }
 public static void main(String[] args) throws Exception {
  HelloFreeMaker hf=new HelloFreeMaker();
  hf.init();
  hf.process();
 }
}

 

 

测试文件

 

test.ftl

 

 

    FreeMarker 基本语法测试
<#--动态赋值-->
${name}
${msg}

<#--
freenarker 标签类似html标签
开始标签:(<#directivename parameters>  结束标签:</#directivename>)  -->

<#--取list类型数据-->
<#list list as student>
student.name的值为: ${student.name}
<#if student.name="123">
if语法
<#elseif student.name="234">
else if 语法
<#else>
else 语法
</#if>
</#list>
 
<#-- x_index 变量索引 x_has_next 是否有下一个    break 跳出循环  -->
<#list ["星期一","星期二","星期三","星期四","星期五"] as x>
 ${x_index +1}. ${x} <#if x_has_next>,</#if>
 <#if x = "星期四">
 <#break>
 </#if>
</#list>

<#--宏定义 类似c语言的宏定义-->
<#macro greet person>
<font size="+2"> Hello ${person}!</font>
</#macro>

<#--在宏定义中使用循环变量,通常用来重复嵌套内容,基本用法为:作为nested指令的参数,传递循环变量的实际值,而在调用自定义指令时,在标记的参数后面指定循环变量的名字。-->
<#macro repeat count>
<#list 1..count as x>
<#nested x,x/2,x==count />
</#list>
</#macro>

<@repeat count=4;c,halfc,last>
${c},  ${halfc}  ,${last?string}  <#--  必须将bool值转换成strin 才能正常输出-->
<#if last>
last!
</#if>
</@repeat>


<#--调用定义的标签 需要使用  <@ -->
<@greet person="${name}" />

<#--  <#assign price = 42 />  定义变量
根据默认格式(#setting 指令设置)将表达式结果转换成文本输出。 -->
<#setting number_format = "currency" />
<#assign price = 42 />
${price}
${price?string}
${price?string.number}
${price?string.currency}
${price?string.percent}

<#-- 输出值为日期值:根据默认格式(由 #setting 指令设置)将表达式结果转换成文本输出,可以使用内建的字符串函数格式化单个插值,-->
<#assign lastUpdated = "2009-01-07 15:05"?datetime("yyyy-MM-dd HH:mm") />
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")};  
${lastUpdated?string("EEE,MMM d,yy")};
${lastUpdated?string("EEEE,MMMM dd,yyyy,hh:mm:ss a '('zzz')'")};
${lastUpdated?string.short};
${lastUpdated?string.long};
${lastUpdated?string.full};

<#-- 数字格式化插值可采用#{expr;format}的形式来格式化数字,其中format可以是:
     mX:小数部分最小X位 四舍五入
     MX:小数部分最大X位
     例如: -->

<#assign x = 2.582 />
<#assign y=4 />
#{x;M2};
#{y;M2};
#{x;m1};
#{y;m1};
#{x;m1M2};
#{y;m1M2};

<#-- Map集合
Map对象使用花括号包括,Map中的key-value对之间以英文冒号(:)隔开,多组key-value对之间以英文逗号(,) 隔开  例如 -->

<#assign score = {"语文":78,"数学":83,"Java":89}  />
<#list score?keys as x>
${x}--->${score[x]};
</#list>

<#--截取字符串 -->
<#assign book="疯狂Ajax讲义" />      
${book[0]}
${book[4]}
${book[1..4]}

<#-- 使用内建的函数。-->
<#assign x = 5>
${(x/2)?int?string.number}
${1.1?int}
${1.999?int}
${-1.9999?int}
${-1.1?int}
 

<#assign test="Tom & Jerry123" />
${test?html}
${test?upper_case?html}

 

 

测试结果 控制台输出

 

   FreeMarker 基本语法测试
zlj
FreeMaker实例

student.name的值为: 123
if语法
student.name的值为: 234
else if 语法
student.name的值为: 456
else 语法
 
 1. 星期一 ,
 2. 星期二 ,
 3. 星期三 ,
 4. 星期四 ,


1,  0.5  ,false 
2,  1  ,false 
3,  1.5  ,false 
4,  2  ,true 
last!


<font size="+2"> Hello zlj!</font>

¥42.00
¥42.00
42
¥42.00
4,200%

2009-01-07 15:05:00 中国标准时间;  
星期三,一月 7,09;
星期三,一月 07,2009,03:05:00 下午 (CST);
09-1-7 下午3:05;
2009年1月7日 下午03时05分00秒;
2009年1月7日 星期三 下午03时05分00秒 CST;

2.58;
4;
2.6;
4.0;
2.58;
4.0;

语文--->¥78.00;
数学--->¥83.00;
Java--->¥89.00;


a
狂Aja

2
¥1.00
¥1.00
-¥1.00
-¥1.00
 

Tom &amp; Jerry123
TOM &amp; JERRY123

 

 

 

你可能感兴趣的:(java,freemarker,Web)