SpringBoot使用Freemarker支援模板繼承
阿新 • • 發佈:2018-11-25
1.使用模板繼承的基本標籤
@extends,@block ,@override.
他們三個都有一個共同的屬性: name
@extend標籤: 要繼承的模板
@block 標籤: 宣告在一個模板中定義那些程式碼是可以被重寫的(@ovrride)
@override標籤: 選擇要重寫的程式碼塊
2.依賴配置
<!--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配置 -> 在yml檔案中的配置
spring: freemarker: charset: UTF-8 check-template-location: true template-loader-path: classpath:/templates
4.在java中的配置,通過@Configuration註解建立配置類.(這裡不配置,標籤則不能使用)
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; @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()); } }
5.模板繼承
(1)建立父模板layout.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>
(2) 建立子模板son.ftl
<@override name="title"> 子模版的 title </@override> <@override name="body"> 子模版的 body </@override> <!--繼承的模板要寫在最下面--> <@extends name="layout.ftl"/>
6.完成.