Freemarker学习记录

①导入

  <dependencies>
  	<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
		<version>2.3.23</version>
	</dependency>
  </dependencies>

②写模板

<html>
<head>
	<meta charset="utf-8">
	<title>Freemarker入门小DEMO </title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出  -->
${name},你好。${message}
</body>
</html>

③编写java

	public static void main(String[] args) throws IOException, TemplateException {
		Configuration configuration = new Configuration(Configuration.getVersion());
		configuration.setDirectoryForTemplateLoading(new File("D:/temp"));
		configuration.setDefaultEncoding("utf-8");
		Template template = configuration.getTemplate("index.ftl");
		Map map=new HashMap();
		map.put("name", "张三");
		map.put("message", "hello  freemarder!");
		Writer out=new FileWriter(new File("D:/temp/index.html"));
		template.process(map, out);
		out.close();
	}

然后会在指定的路径名下根据map的内容动态的生成html文件。

模板文件中四种元素

  1、文本,直接输出的部分
  2、注释,即<#--...-->格式不会输出
  3、插值(Interpolation):即${..}部分,将使用数据模型中的部分替代输出
  4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出。

assign指令

此指令用于在页面上定义一个变量

(1)定义简单类型:

<#assign linkman="周先生">

联系人:${linkman}

(2)定义对象类型:

<#assign info={"mobile":"13301231212",'address':'北京市昌平区王府街'} >

电话:${info.mobile}  地址:${info.address}

 

include指令:将一些公共的东西抽取出来灵活使用

我们修改index.ftl,在模板文件中使用include指令引入刚才我们建立的模板,

<#include "head.ftl">

 

if指令

                    在模板文件上添加

<#if success=true>

  你已通过实名认证

<#else>

  你未通过实名认证

</#if>

                     在代码中对str变量赋值

map.put("success", true);

                        在freemarker的判断中,可以使用= 也可以使用==

 list指令

        在Map中添加集合数据goodsList

----商品价格表----<br>
<#list goodsList as goods>
  ${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br>
</#list>

内建函数

①获得某个集合的大小

共  ${goodsList?size}  条记录

json字符串转为对象

<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
	<#assign data=text?eval />
	开户行:${data.bank}  账号:${data.account}

日期格式化

dataModel.put("today", new Date());

  页面中进行格式化

当前日期:${today?date} <br>          2017-5-24
当前时间:${today?time} <br>          17:58:41
当前日期+时间:${today?datetime} <br>
日期格式化:  ${today?string("yyyy年MM月")}

数字转为字符串:发现过大的数字是有默认的样式,每三位有一个都好分隔。

累计积分:${point?c}

空值处理运算符

<#if aaa??>
aaa变量存在
<#else>
aaa变量不存在
</#if>

缺失变量默认值:为null时进行默认值设置,aaa为null   显示 -

  ${aaa!'-'}

运算符FreeMarker支持的算术运算符包括:+, - , * , / , %

    逻辑运算符
        逻辑与:&& 
        逻辑或:|| 
        逻辑非:! 
        逻辑运算符只能作用于布尔值,否则将产生错误 

​​​​​​​    比较运算符

         1. =或者==:判断两个值是否相等. 
         2. !=:判断两个值是否不等. 
         3. >或者gt:判断左边值是否大于右边值 
         4. >=或者gte:判断左边值是否大于等于右边值 
         5. <或者lt:判断左边值是否小于右边值 
         6. <=或者lte:判断左边值是否小于等于右边值 

注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,"x","x ","X"是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)> 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值