springboot使用Freemarker继承
最近需要用到Freemarker的继承。但是发现没有关于springboot配置Freemarker的继承的。所以趁现在有时间写个博客。
1. Freemarker继承介绍
Freemarker 通过 rapid java实现继承。实际是rapid的jar包提供的三个自定义标签。实现继承用到的有三个标签:@extends
,@block
,@override
.
他们三个都有一个共同的属性: name
@extend
标签: 要继承的模板
@block
标签: 声明在一个模板中定义那些代码是可以被重写的(@ovrride)
@override
标签: 选择要重写的代码块
2. 依赖配置
我选择的是maven的依赖
<!--rapid-framework 模板继承框架-->
<dependency>
<groupId>com.googlecode.rapid-framework</groupId>
<artifactId>rapid-core</artifactId>
<version>4.0.5</version>
</dependency>
<!-- lang包 缺少的话可能会报错 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
3.Freemarker配置
在application.yml
的配置:
spring:
freemarker:
charset: UTF-8
check-template-location: true
template-loader-path: classpath:/templates
在java中的配置,通过@Configuration
注解创建配置类,将自定义标签添加进去
刚开始我引入jar包的时候告诉我找不到该类。但是我在idea中下载源码后就可以找到这些类了。不知道为什么
import cn.org.rapid_framework.freemarker.directive.BlockDirective;
import cn.org.rapid_framework.freemarker.directive.ExtendsDirective;
import cn.org.rapid_framework.freemarker.directive.OverrideDirective;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
/**
* @Author LiuYinXin
* Created at 2017/5/2.21:21.
*/
@Configuration
public class FreemarkerConfig {
@Autowired
freemarker.template.Configuration configuration;
@PostConstruct
public void setSharedVariable(){
configuration.setSharedVariable("block", new BlockDirective());
configuration.setSharedVariable("override", new OverrideDirective());
configuration.setSharedVariable("extends", new ExtendsDirective());
}
}
4 模板继承
创建父模板base.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>
<@block name="title" >父模板的 title</@block>
</title>
</head>
<body>
<div>
<h3>
<@block name="body" >父模板的 body</@block>
</h3>
</div>
</body>
</html>
创建son.ftl
<@override name="title">
子模版的 title
</@override>
<@override name="body">
子模版的 body
</@override>
<!--继承的模板要写在最下面-->
<@extends name="base.ftl"/>
这样就搞定了Freemarker继承
5 致谢
spring 整合freemarker 实现模板继承—阿伦·艾
关注我,抽搐性更新
小猿日常
我的公众号,抽搐性更新日常。(突然想发上来。虽然没怎么发布过文章)
原文 http://blog.csdn.net/liuyinxinall/article/details/71159929