最近需要用到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-8check-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

转载于:https://www.cnblogs.com/gantoday/p/7854096.html

springboot使用Freemarker继承相关推荐

  1. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  2. springboot整合freemarker(转)

    添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...

  3. Springboot整合freemarker和相应的语法

    FreeMarker 是⼀款 模板引擎: 即⼀种基于模板和要改变的数据, 并⽤来⽣成输出⽂本(HTML⽹⻚,⼦邮件,配置⽂件,源代码等)的通⽤⼯具. 是⼀个Java类库. FreeMarker 被设计 ...

  4. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用

    1. freemarker引擎的使用 如果你使用的是idea或者eclipse中安装了sts插件,那么在新建项目时就可以直接指定试图模板 如图: 勾选freeMarker,此时springboot项目 ...

  5. Java技术:SpringBoot集成FreeMarker生成word文件

                    今天给大家分享SpringBoot集成FreeMarker模板引擎生成word文件的用法,感兴趣的可以学一下,完整源码地址在文章末尾处,欢迎互相沟通交流! 一.什么是F ...

  6. 搭建springboot+mybatis+freemarker项目

    1. 创建springboot web项目 先创建一个项目 选择maven项目,先什么都不勾,直接点击next groupid和artifactid可以随便填,然后点击next 点击finish fi ...

  7. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  8. SpringBoot使用Freemarker导出word模板(OpenXML)

    1.OpenXML 本文仅限WPS的word,微软的word另存为XML的格式略有不同 word.docx文档另存为xml之后会生成带有OpenXML标签的文档. 1.1.常用标签示意 标签 解释 & ...

  9. springboot整合freemarker案例

    springboot整合freemarker案例 1.pom.xml 2.application.properties 3.实体类 4.controller 5.取普通变量的值 6.遍历集合 7.遍历 ...

最新文章

  1. struts2_对Map进行双层迭代
  2. 删除username的索引
  3. 添加右键菜单_添加“复制路径”选项到右键菜单
  4. VMware安装虚拟机Ubuntu提示piix4_smbus 0000:00:007.3: Host SMBus controller not enabled错误解决办法...
  5. jdk的ServiceLoader
  6. 正则表达式学习笔记003--问号和加号的认识与应用
  7. 【Java从0到架构师】Redis 基础 - 数据类型
  8. mini2440 貌似复杂的mmu
  9. C++ template 学习归纳总结4
  10. 微信小程序教学第三章(含视频):小程序中级实战教程:列表-静态页面制作...
  11. python爬虫淘宝视频_python爬虫视频教程:一篇文章教会你用Python爬取淘宝评论数据...
  12. J2EE框架技术(SpringMVC) 知识点笔记(2)
  13. Win10正式版激活方法有哪些?如何激活Win10?
  14. OpenCV 3 image shape - size - dtype
  15. 富士急乐园免税店将开业,打造游园购物访日体验
  16. 【Leetcode刷题Python】739. 每日温度
  17. Mysql实战45讲(二十二)Mysql有那些“饮鸩止渴”提高性能的方法?
  18. 记一次高德地图引入 AMap is not defined 血坑
  19. 懒人必备神器 !一个创意十足的 Python 命令行工具
  20. IOC流程解析-BeanFactory的创建

热门文章

  1. java数组与以逗号分隔开的字符串的相互转换
  2. C# 根据文本设置combobox的两种方法
  3. Jeecg-Boot 1.1 发布,基于 SpringBoot+Ant Design 的快速开发平台
  4. ECshop生态全面开放,城市合伙人招募火热启动
  5. Juniper CoS 基本配置说明
  6. Android控制文字水平间距android:letterSpacing
  7. 初学数模-MATLAB Quick Start! Part I
  8. 使用CocoaPods做项目管理
  9. javascript高级编程学习笔记(二)——继承
  10. 虚机分配静态IP地址