FreeMarker常用指令和函数

针对FreeMarker的常用指令和函数的记录以备查看:

<html>
	<head>
		<meta charset="utf-8"/>
		<title>登录</title>
	</head>
	<body>
		<h1>用户注册信息</h1>
		用戶名:${user.username}
		密碼:${user.password}
		<br><br>
		
		<!-- 创建和替换变量 -->
		[#assign x=1]
		创建的变量x:${x}<br>
		[#assign x=x+3]
		替换后的变量x:${x}
		<!-- 注意局部变量的使用会隐藏简单变量,而循环变量的使用会隐藏局部变量和简单变量 -->
		
		<!-- if指令 -->
		[#if user.username ??]
			<p>恭喜你,登录成功</p>
		[#else]
			<p>用户名不存在</p>	
		[/#if]
		
		<!-- list、break指令 -->
		<br><br>
		[#list user.friendsList as friend]
			<p>${friend}</p>
		[/#list]
		
		<!-- include指令 -->
		<br><br>
		[#include "include.html"]
		<!--************** 以上是三个最常用的指令***************** -->
		
		
		<!--  noparse 指令 
		针对这个指令,中间主要放入需要显示freemarker源代码的内容 -->
		<br><br>
		[#noparse]
			[#if user.username ??]
			<p>恭喜你,登录成功</p>
			[#else]
			<p>用户名不存在</p>	
			[/#if]
		[/#noparse]
		
		<!--  compress 指令 
		这个指令的主要作用是压缩指令中间的空白行或者空白格 -->
		<br><br>
		[#compress]
			1  2    4               5
			we are 
			
			friends
		
		[/#compress]
		
		<!-- 处理不存在的状态,以下两种方式为常用处理方式 -->
		<p> Now is ${date!"2010-10-10"}</p>
		[#if date??]<p>Now is ${date}</p>[/#if]
		
		<!-- 表达式的使用 -->
		<br><br>
		${firstNum!}+${lastNum!}=${firstNum+lastNum}<br>
		${firstNum!}X${lastNum!}=${firstNum*lastNum}<br>
		${firstNum!}/${lastNum!}=${(firstNum/lastNum)?int}<br><!-- 使用内建函数获取整数部分 -->
		<!-- 字符串连接 -->
		${user.username+user.password}
		
		<!-- 自定义指令 -->
		<br><br>
			<!-- 不带参数的自定义指令 -->
		[#macro greet]
			<font size="+2">Hello Joe !</font>
		[/#macro]
		
		[@greet][/@greet]
			<!-- 带参数的自定义指令 -->
			<br><br>
		[#macro demo name sex ]
			<p>hello ${name} ,sex is ${sex}!
		[/#macro]	
		
		[@demo name="liubei" sex="man"][/@demo]
			<!-- 嵌套内容 -->
			<br><br>
		[#macro do]
			[#nested],
			[#nested],
			[#nested]
		[/#macro]
		[@do]hello[/@do]
		
		<!-- 命名空间和import标签 -->
		<!-- 命名空间是相互独立的,不存在命名空间包含 -->
		[#import "import.html" as my]	
		[@my.copyright date="2016-11-12"][/@my.copyright]<br>
		[#assign mail = "[email protected]"]<br>
		${my.email}<br>
		${mail}<br>
		<!-- 如果想要改变命名空间里的变量乐意使用assign指令来完成,具体如下 -->
		<br><br>
		改变前的邮箱:${my.email}<br/>
		[#assign email = "[email protected]" in my]
		assign标签改变后的邮箱:${my.email}
		
		
		
		
		
		<!--*********** 内建函数*************** -->
		<!-- substring取子串 -->
		<br><br>
		从第二个字符开始到最后:${testString?substring(1)}<br>
		从第二个字符开始到第五个字符:${testString?substring(1,4)}<br>
		<!-- cap_first首字母大写,uncap_first首字母小写,capitalize字符串单词的首字母大写 -->
		<br><br>
		首字母大写:${testString?cap_first}<br>
		首字母小写:${testString?uncap_first}<br>
		字符串单词首字母大写:${testString?capitalize}<br>
		<br><br>
		<!-- 切断换行符chop_linebreak,针对在字符串没有换行符的进行换行 -->
		换行:${testString?chop_linebreak}
		<br>
		<!--date,time,datetime,日期,时间,日期时间的格式化  -->
		[#assign test1 = "10/25/1995"?date("MM/dd/yyyy")] 
		[#assign test2 = "15:05:30"?time("HH:mm:ss")]
		[#assign test3 = "1995-10-25 03:05:12"?datetime("yyyy-MM-dd hh:mm:ss")]
		${test1} 
		${test2} 
		${test3} 
		<!-- ends_with 以...号结尾,用于判断字符串是否以指定的字符结尾 -->
		<br><br>
		[#if testString?ends_with("body!")]
			改字符串是以“body”结尾。
		[/#if]
		<!-- length字符串长度 -->
		<br><br>
		testString的长度是:${testString?length}
		<!-- lower_case,字符串的小写形式(upper_case表示转换为大写形式) -->
		<br><br>
		将字符串以小写形式显示:${testString?lower_case}
		<!-- left_pad,right_pad,距左边距,右边距 -->
		<br><br>
		[${"liubei"?left_pad(10)}]<br>
		[${"liubei"?left_pad(10,"-")}]
		<!-- contains判断是否包含 -->
		<br><br>
		[#if testString?contains("every")]
		<p>${testString!} contains "every"</p>
		[/#if]
		<!-- replace()替换 -->
		<br><br>
		替换:${testString?replace("hello","Welcome to ChengDu")}
		<!-- split()分割 -->
		<br><br>
		分割:
		[#list testString?split(" ") as word]
			${word}<br>
		[/#list]
		<!-- trim()修正字符串,将字符串两端的空格去掉 -->
		<br><br>
		去掉字符串两端的空格:(${"  liubei  "?trim})
		<!-- String数字转字符,可以利用转换对数字进行取舍,含有四舍五入 -->
		<br><br>
		[#assign x = 10.123]
		${x}<br>
		${x?string}<br>
		${x?string.number}<br>
		${x?string.currency}<br>
		${x?string.percent}<br>
		${x?string.computer}<br>
		<br><br>
		${x?string("0.##")}<br>
		${x?string("000.00")}<br>
		
		<!-- 设置预定义格式后进行显示 -->
		[#setting number_format = "0.##"]
		${12.23631}
		
		<!-- round(四舍五入),floor(相邻最小整数),ceiling(相邻最大整数) -->
		<br><br>
		针对-1.5:${-1.5?round},${-1.5?floor},${-1.5?ceiling}
		
		<!-- 处理日期格式 -->
		<br><br>
		${nowTime?string("yyyy-MM-dd HH:mm:ss")} <br>
		${nowTime?date} <br>
		${nowTime?time} <br>
		${nowTime?datetime} <br>
		
		<!-- 排序,如果使用?sort_by()就表示以什么来排序 -->
		<br><br>
		[#list wordList?sort as i]
			${i}
		[/#list]
		
		
		<!-- ******************程序开发****************** -->
		<!-- 自定义指令 -->
		[#assign upper = "com.lt.directive.UpperDirective"?new()] 
		[@upper]
			asdafads
		[/@upper]
		
	</body>
</html>


你可能感兴趣的:(FreeMarker常用指令和函数)