Freemarker和jsp一样是一个视图的引擎模板,其实所有的模板引擎的工作原理都是类似的,如下图:
接下来就具体讲解一下Freemarker的用法,参考手册:模板 + 数据模型 = 输出 - FreeMarker 中文官方参考手册
SpringBoot默认就支持这个模板,下面看看怎么把他们整合在一起:
1、配置freemarker的启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、编程controller类
3.编写ftl模板文件,注意:模板文件必须放在src/resources/templates目录下
4、测试
5.freemarker的页面语法总结
freemarker的标签种类:
- ${..}:FreeMarker will replace it in the output with the actual value of the thing in the curly brackets. They are called interpolation s.
- ...
- 注释标签,注意不是
一些特殊的指令:
- r代表原样输出:${r"C:\foo\bar"}
- ${x}
- ?引出内置指令
- String处理指令:
- html : 特殊的html字符将会被转义,比如"<
- cap_first 、lower_case 、upper_case
- cap_first:将字符串的第一个字符或者字母(仅前几个字符是空格的情况)大写(如果第一个字符是字母);
- 如果字符串的第一个字符不是字母(空格除外),将按照原来字符串的格式返回;若第一个字符是字母并且是大写的情况,结果同上。
- trim : 除去字符串前后的空格
- sequences处理指令
- size :可以用于返回list集合的元素个数
- numbers处理指令
- int : number的整数部分,(e.g. -1.9?int is -1)
对于null,freemarker会报错
- ! :默认值操作符,语法结构为: unsafe_expr !default_expr,
- 比如 ${mouse!"No mouse."} 当mouse不存在时,返回default value;
- (product.color)!"red" 这种方式,能够处理product或者color为miss value的情况;
- 而product.color!"red"将只处理color为miss value的情况
- ?? : Missing value test operator ,测试是否为missing value
- unsafe_expr?? : product.color?? 将只测试color是否为null
- (unsafe_expr)?? : (product.color)?? 将测试product和color是否存在null
Mouse found
No mouse found
Creating mouse...
Mouse found
No mouse foun