`
269629151
  • 浏览: 122064 次
社区版块
存档分类
最新评论

freemaaker 基本语法测试整理

    博客分类:
  • web
阅读更多

测试类

 

/**
 * 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

 

 

 

分享到:
评论

相关推荐

    c#基本语法if测试c#基本语法if测试

    c#基本语法if测试c#基本语法if测试c#基本语法if测试c#基本语法if测试

    日语语法大全整理笔记.zip

    1. **日语语法大全整理笔记**:这是一份综合性的资料,可能包含了从基础到高级的日语语法要点,包括但不限于接续词、助动词、敬语、授受关系、被动语态、使役形、连用形、终止形等。这些笔记通常会以实例和解释相...

    JavaSE基础语法测试题库

    本资源摘要信息主要涵盖 JavaSE 基础语法测试题库的相关知识点,涵盖了环境变量、Java 源文件和编译后的文件扩展名、基本数据类型、时间转换、控制台输出、数组操作、排序算法、查找算法等多方面的内容。 一、环境...

    日语语法大全整理笔记.pdf

    多年积累的日语语法资源,希望对大家的日语学习有一定的帮助。

    freemarker基本语法整理

    Freemarker 基本语法整理 作为一款流行的模板引擎,Freemarker 在 Struts2 框架中扮演着重要的角色。本文将对 Freemarker 的基本语法进行整理,涵盖输出、逻辑判断、循环遍历、宏等方面的知识点。 输出 在 ...

    SQL语句基本语法

    SQL语句基本语法,各种基本的一些增删改查等.

    小学英语语法测试题答案.pdf

    另外,主格和宾格是英语语法的基本概念。主格是指句子的主语,而宾格是指句子的宾语。例如"I am a student."中"I"是主格,而"a student"是宾格。同样,在句子"He is my friend."中"He"是主格,而"my friend"是宾格。...

    net介绍及C#基本语法

    net介绍及C#基本语法.ppt

    ES6核心语法整理笔记

    主要总结了ES6的一些核心语法,整理成一个思维导图,能帮助快速复习回顾

    02C语言基本语法知识[整理].pdf

    02C语言基本语法知识[整理].pdf

    Java基本语法大全(全).ppt

    Java基本语法大全

    JavaScript基本语法.ppt

    JavaScript基本语法.ppt,非常适合初学者,用后会帮助你很多

    Java中的基本语法部分思维导图

    JavaSE阶段,基本语法部分的思维导图,学习Java对于新人来说本来就比较难,我在这里自己把基本语法部分的知识点都进行了一个串联,做成了一个思维导图,可供初学者以及备考学生进行参考

    Java基本语法编程练习.doc

    Java 基本语法编程练习 Java 是一种广泛使用的高级编程语言,具有平台独立性、对象oriented 和大规模的标准库等特点。Java 基本语法编程练习是学习 Java 语言的基础,以下是 Java 基本语法编程练习的知识点总结: ...

    jsp基本语法使用

    jsp基本语法 本书由 中华电脑书库 整理制作, 仅供个人学习研究交流之用 版权归原作者所有,严禁作商业用途。否则一切后果自理

    Html标记的基本语法

    Html标记的基本语法和Dreamweaver的基本操作

    DB2数据库基本语法

    一些DB2数据的基本SQL语法,供参考学习之用

    React学习基本语法

    这是我学习 React 写的第一个程序,也是React的最基本的语法,上传到这里,和大家交流学习

    小学英语语法 测试题及答案.docx

    在英语语法中,be 动词是最基本也是最重要的动词之一。be 动词有多种用法,包括连结、描述、比较等。例如,在句子 “I am a student.” 中,be 动词用来连接主语和宾语,描述主语的身份。在句子 “She is a teacher....

Global site tag (gtag.js) - Google Analytics