一、创建项目
勾选FreeMarker模板引擎

二、配置文件
yml文件中增加配置freemarker
freemarker :
# 指定 HttpServletRequest 的属性是否可以覆盖 controller 的 model 的同名项
allow-request-override : false
#req 访问 request
request-context-attribute : req
# 后缀名 freemarker 默认后缀为 .ftl ,当然你也可以改成自己习惯的 .html
suffix : .ftl
# 设置响应的内容类型
content-type : text/html;charset=utf-8
# 是否允许 mvc 使用 freemarker
enabled : true
# 是否开启 template caching
cache : false
# 设定模板的加载路径,多个以逗号分隔,默认 : [“classpath:/templates/”]
template-loader-path : classpath : /templates/
# 设定 Template 的编码
charset : UTF-8
# ftl 文件的更新时间
template_update_delay : 0
三、语法模板
前端使用${ }接收后端传过来的值

设置freemarker文件的模板 ,以后新建freemarker文件时会自带编辑的代码
四、编码
1.后端传值
controller类注解@controller,方法中使用model或 modelView存值

boolean类型
当把f1传到前端页面去,由于f1是Boolean类型,所以应该这样取值
<h1>${f1?c}</h1>
c为内建函数
<h1>${f1?then("yes","no")}</h1>
then相当于三元运算符
页面显示

时间类型
model.addAttribute("f2",new Date());
显示时间类型
<h1>${f2?time}</h1>

空值处理
在freemarker中不支持值为null,下面表达式的意思是如果f3为空就显示no f3字符串
<h1>${f3!"no f3"}</h1>

还可以用下面这种方式
<h1>${f3???c}</h1>
两个问号代表f3是否有值,由于判断是Boolean类型,所以应该用?c转化成string类型,否则会报错
结果显示

显示数据list
将查询到的数据放到请求中

前端代码
<#list book as b>
${b.name}
<#else>当前没有数据
</#list>
模拟查询不到数据的情况page=100页

if指令
前端
<#if f1>
真的
<#else >
假的
</#if>
assign指令
定义变量,也就是说在当前页面上有一个num的变量,值为111
<#assign num=111>
global指令
全局变量,所以页面可用,但是assign只能用于单页面
表格展示数据
<#list book>
<table align="center" class="b1">
<tr>
<td>id</td>
<td>名称</td>
<td>作者</td>
<td>价格</td>
<#-- <td>操作</td>-->
</tr>
<#items as b>
<tr>
<td>${b.id}</td>
<td>${b.name}</td>
<td>${b.author}</td>
<td>${b.price}</td>
<#-- <td><a>删除</a><a>修改</a></td>-->
</tr>
</#items>
</table>
<ul>
<li><a href="/?page=${pagebean.prevPage()}">上一页</a></li>
<li><a href="/?page=${pagebean.nextPage()}">下一页</a></li>
</ul>
<#else>当前没有数据
</#list>
结果

项目地址全路径:
${springMacroRequestContext.getContextPath()}
本文详细介绍了如何在Spring Boot项目中集成FreeMarker模板引擎,包括创建项目、配置文件设置、FreeMarker语法模板的使用,以及编码示例,如布尔类型处理、空值显示、数据列表展示和控制结构的应用。
2530

被折叠的 条评论
为什么被折叠?



