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
springboot使用Freemarker继承的更多相关文章
- springboot整合freemarker
		
前后端分离现在越来越多,如何有效的使用springboot来整合我们的页面是一个很重要的问题. springboot整合freemarker有以下几个步骤,也总结下我所犯的错误: 1.加依赖: 2.配 ...
 - 记springboot+mybatis+freemarker+bootstrap的使用(1)
		
一..springboot的配置 1.安装并配置maven maven是项目管理工具,可以自动下载并管理jar包之间的依赖关系,可通过maven自动配置springboot 参照百度经验https:/ ...
 - SpringBoot学习8:springboot整合freemarker
		
1.创建maven项目,添加pom依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframewor ...
 - springboot整合freemarker(转)
		
添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
 - springboot 使用 freemarker 无法正常跳转的问题?
		
1.springboot 使用 freemarker 无法正常跳转的问题? 参考:https://blog.csdn.net/Lin_xiaofeng/article/details/79122053 ...
 - springboot 整合 freemarker
		
springboot 整合 freemarker 依赖 <parent> <groupId>org.springframework.boot</groupId> & ...
 - SpringBoot整合freemarker 引用基础
		
原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...
 - 【SpringBoot】09.SpringBoot整合Freemarker
		
SpringBoot整合Freemarker 1.修改pom文件,添加坐标freemarker启动器坐标 <project xmlns="http://maven.apache.org ...
 - 基于springboot的freemarker创建指定格式的word文档
		
在web或其他应用中,经常我们需要导出或者预览word文档,比较实际的例子有招聘网站上预览或者导出个人简历,使用POI导出excel会非常的方便,但是如果想导出word,由于其格式控制非常复杂,故而使 ...
 
随机推荐
- win10家庭版系统安装SQL2005
			
安装sql2005花了两天的时间,现在总结下,刚开始不知道win10家庭版系统没有本地用户和组的(详细说明 https://www.kafan.cn/A/5vz17o5jne.html) 一定要升级到 ...
 - RabbitMQ.Bus
			
一个.netcore下的,十分简单的rabbitmq封装,基于RabbitMQ.Client Nuget https://www.nuget.org/packages/RabbitMQ.Bus/ ht ...
 - robot自动化分层设计
			
robot framework框架分层设计
 - html  线条重叠变粗
			
加入属性 单元格重叠变粗 使用border-collapse:collapse; 可以解决.
 - Subway Pursuit (二分)(交互题)
			
题目来源:codeforces1039B Subway Pursuit 题目大意: 在1到n里有一个运动的点,要求找到这个点,每次可以查询一个区间内有没有这个点,每次这个点往左或者往右移动1到k个位置 ...
 - join()函数
			
注意:会报错 正确的:
 - Spring定时任务执行
			
备注:这个是基于搭建好spring的环境下的 注解方式: 1.定时任务类 package com.test;import java.util.Date;import org.springframewo ...
 - bzoj 2780: [Spoj]8093 Sevenk Love Oimaster(广义SAM)
			
题目大意:给出n个原串,再给出m个查询串.求每个查询串出现在了多少原串中. 题解 直接对原串建一个广义SAM,然后把每一个原串放到SAM上跑一跑,记录一下每一个状态属于多少个原串,用$size$表示. ...
 - mask layer的遮罩层
			
1. layer层 mask 遮罩效果 //渐变层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.fr ...
 - java学习基础部分
			
JVM虚拟机的位置: 垃圾回收在java程序运行过程中自动进行,程序员无法精准控制和干预. Java程序还会出现内存泄漏和内存溢出. Jre = jvm+java se标准类库 Jdk = jre + ...