freemarker教程

语法以及常用函数,注意事项都有很详细的讲解,收藏了。

http://www.blogjava.net/176142998/archive/2010/07/03/325159.html

 

 

以下为学习和测试的数据。

主要学习了:

freemarker的数据类型sequences(可理解为数组), hashes(可理解为对象) 的值遍历与访问,以及相应的内建函数

字符串的常用内建函数

macro宏定义

freemarker中request,session,application作用域的值及顺序,请求参数的获取。

freemarker中获取cookies的值???? 这个测试失败了,还没找到答案

 

@Controller

public class MessageController {



	@RequestMapping("/ftl")

	public String showMsg(HttpServletRequest req,Model m){

		m.addAttribute("name", "hello freemarker in request");//request作用域name设值

		

		ArrayList<String> userNames = new ArrayList<>(); //request作用于设置一个list集合,在freemarker中遍历

		

		userNames.add("zhangsan");

		userNames.add("lisi");

		userNames.add("wangwu");

		m.addAttribute("userNames",userNames);

		

		String[] stuNames = {"st1","st2","st3"};

		String[] stuNames2 = {"st221","st222","st223"};

		

		req.setAttribute("stuNames", stuNames2);

		

		req.getServletContext().setAttribute("stuNames", stuNames);  //application作用于设置一个list集合,在freemarker中遍历

		req.getServletContext().setAttribute("name", "hello freemarker in application");  //application作用域name设值

		

		

		return "index";

	}

	

}

 

index.ftl  用于freemarker模板测试

 

${name}   打印request中的name。 由于application中也有name,默认寻找顺序为freemarker 数据中 --> request --> session --->application<br/>



----------------------<br/>

<#list userNames as name>    

<font color="red"> ${name} </font><br/>

</#list>



----------------------<br/>

<#list stuNames as name>

<font color="green"> ${name} </font><br/>

</#list>



--------------------<br/>

字符串: ${"abc"+"def"}  <br/>

数字: ${18} <br/>



布尔型:

<#if true>

hello true world  <br/>

</#if>



序列:

<#list <#--["china",3.0,"japen","asia"]-->   1..5 as item>

${item}&nbsp;

</#list>





<br/>---------------------------------<br/>

序列的链接操作

<#list <#--["e"] + ["a","b","c"]--> (1..5) + (6..9) as item>

${item}&nbsp

</#list>



<br/>-----------------------------<br/>

字符序列:<#assign user="china"/>

${r"${user[2]} "} = ${user[2]}  <br/>



${r"${user[1..5]}"}= ${user[1..4]} <br/>





------------------------------<br/>

数组的长度=

<#assign user2=["china","usa"]/>

${user2?size}<br/>



<br/>-------------------------------------------<br/>

算数操作符: ${1/3}<br/>

${1+"5"} 合并为了字符串,这是字符串连接符的加号<br/>





------------------------------<br/>

format:

<#setting number_format="currency"/>

<#assign answer=43/>

${answer?string.number}<br/>

${answer?string.percent}<br/>





-------------<br/>

<#assign myBol = false/>

${myBol?string("ok","no")}



----------------------<br/>

<#assign numberToStr = 4/>

#{numberToStr;m2}<br/>



--------------------------<br/>

Macro directivename<br/>



<#macro greet>

<font size="+2">hello joe!</font>

</#macro>

invoke= <@greet/>



<br/>

Macro parameters<br/>

<#macro greet person>

<font size="+2">${person}</font>

</#macro>



<@greet person="fred"/>  and <@greet person=1/> <br/>



Macro parameters Default Values<br/>

<#macro happy person="joe" age=18>

<font size="+2">${person}</font>&nbsp age=${age}

</#macro>



invoke= <@happy person="lisi"/>

<br/>





<#macro do_thrice>

  <#nested>

  <#nested>

  <#nested>

</#macro>

<@do_thrice>

  Anything.

</@do_thrice>  







<#setting number_format="#"/>

<br/>-----------------------------------<br/>

内建函数:<br/>

转大写=${"abc"?upper_case}<br/>

转html=${"abc<br/>"?html}<br/>

首字母大写=${"abc"?cap_first}<br/>

带空格 =${" abc efd"}<br/>

去除空格 =${" abc efd"?trim}<br/>

获取序列的长度=${"abcdef"}  必须是序列,不能是字符串,但字符串可以像序列那样用索引访问字符<br/>

获取字符串得字符=${"abcdef"[2]}<br/>



sequences内建函数<br/>

<#assign myArr = 1..10/>

first = ${myArr?first}<br/>

last = ${myArr?last}<br/>

reverse = 

<#list myArr?reverse as i>

${i}&nbsp;

</#list>



<br/>Hashes内建函数<br/>

<#assign myList=[{"name":"zk","age":18},{"name":"lisi","age":22}]/>

<#list myList as obj>

<!--${obj.name}<br/>-->

<#list obj?keys as key>

 ${obj[key]}&nbsp;

</#list>

</#list>





<br/>---------------------<br/>

判断对象是否存在:

<#if ! name22?exists>

name22对象不存在!<br/>

<#else>

${name22?exists?string("yes existes","no")}<br/>

</#if>

-----------------<br/>

<#--<#assign mouse="zq"/>-->

if_exists=

${mouse?if_exists}  <br/>



默认值:

${z_name?default("zkkk")} 如果该变量为null则设置。 为空字符串不会设置。<br/>





--------------------------<br/>

split<br/>

<#list "hello,china,usa,"?split(",") as item>

${item}<br/>

</#list>

-------------<br/>

获取字符串长度

${"abc"?length} <br/>



---------------------<br/>

request中的name =  ${Request ["name"]} <br/>

session中的name =  ${Application ["name"]} <br/>

获取请求参数RequestParameters =  ${RequestParameters["mouse"]} <br/>

 

 

带请求参数访问 http://localhost:8080/Freemark/ftl?mouse=hahahahhahahahahahah

输出为:

hello freemarker in request 打印request中的name。 由于application中也有name,默认寻找顺序为freemarker 数据中 --> request --> session --->application
----------------------
zhangsan
lisi
wangwu
----------------------
st221
st222
st223
--------------------
字符串: abcdef
数字: 18
布尔型: hello true world
序列: 1  2  3  4  5 
---------------------------------
序列的链接操作 1  2  3  4  5  6  7  8  9 
-----------------------------
字符序列: ${user[2]} = i
${user[1..5]}= hina
------------------------------
数组的长度= 2

-------------------------------------------
算数操作符: 0.33
15
------------------------------
format: 43
4,300%
-------------
no ----------------------
4.00
--------------------------
Macro directivename
invoke= hello joe!
Macro parameters
fred and ¥1.00
Macro parameters Default Values
invoke= lisi  age=¥18.00
Anything. Anything. Anything.
-----------------------------------
内建函数:
转大写=ABC
转html=abc<br/>
首字母大写=Abc
带空格 = abc efd
去除空格 =abc efd
获取序列的长度=abcdef 必须是序列,不能是字符串,但字符串可以像序列那样用索引访问字符
获取字符串得字符=c
sequences内建函数
first = 1
last = 10
reverse = 10  9  8  7  6  5  4  3  2  1 
Hashes内建函数
zk  18  lisi  22 
---------------------
判断对象是否存在: name22对象不存在!
-----------------
if_exists=
默认值: zkkk 如果该变量为null则设置。 为空字符串不会设置。
--------------------------
split
hello
china
usa

-------------
获取字符串长度 3
---------------------
request中的name = hello freemarker in request
session中的name = hello freemarker in application
获取请求参数RequestParameters = hahahahhahahahahahah

你可能感兴趣的:(freemarker)