基于spring boot starter freemarker
<!--页面模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
添加依赖
<!--rapid-freemarker 模板继承框架-->
<dependency>
<groupId>com.googlecode.rapid-framework</groupId>
<artifactId>rapid-core</artifactId>
<version>4.0.5</version>
</dependency>
添加配置
@Configuration
public class FreemarkerConfiguration {
@Autowired
freemarker.template.Configuration configuration;
@PostConstruct
public void setSharedVariable(){
configuration.setSharedVariable("block", new BlockDirective());
configuration.setSharedVariable("override", new OverrideDirective());
configuration.setSharedVariable("extends", new ExtendsDirective());
}
}
使用方法
首先定义一个模板
base.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<@block name="head"></@block>
<!-- 这是freemarker的引入 -->
<#include "head.ftl">
</head>
<body>
<@block name="body"></@block>
<#include "foot.ftl">
</body>
</html>
然后另外一个新建一个页面
index.ftl
@override 类似vue的template
include 类似vue的组件引入
<!-- @override 就是重写 -->
<@override name="head">
<title>Home</title>
</@override>
<@override name="body">
<!-- 这是freemarker的继承 -->
<#include "../component/layout.ftl">
</@override>
<!-- @extends 是继承 -->
<@extends name="../component/base.ftl"></@extends>
这样当访问index页面的时候,自动具备了base.ftl中定义的head和body等内容了,然后重写的就是block的内容
网友评论