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 致謝

Freemarker 實現 繼承、覆蓋 — 趙大叔

spring 整合freemarker 實現模板繼承—阿倫·艾

關注我,抽搐性更新

小猿日常

小猿日常 
我的公眾號,抽搐性更新日常。(突然想發上來。雖然沒怎么發布過文章)

 

原文 http://blog.csdn.net/liuyinxinall/article/details/71159929


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM