Freemarker 实现 继承、覆盖

深入理解Freemarker模板继承与接口实现(下) Freemarker是一个用于Java程序中的模板引擎,它允许你将业务逻辑与页面展示分离,从而使得开发者可以更专注于业务逻辑的实现。模板文件通常以.ftl作为文件扩展名,里面包含了嵌入的Freemarker指令,用于控制数据的输出格式和页面布局。是Freemarker中一个抽象类,它封装了模板环境(Environment)的操作接口。Freemarker的模板渲染都是在环境中完成的,因此在整个渲染过程中起着承上启下的作用。// ... 其他方法。 阅读详情
需要的jar 
(1).假如你是maven 用户 在pox.xml 中添加
<dependency>
<groupId>com.googlecode.rapid-framework</groupId>
<artifactId>rapid-core</artifactId>
<version>4.0.5</version>
</dependency>
(2).其他可以去 点击打开链接 下载


项目 Spring mvc + freemarker 在这里的代码都是相关 Freemarker 实现继承 

在Dispatch-servlet.xml 中添加如下

<!--这里是 Freemarker配置-->
<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/templates/" />
		<property name="freemarkerSettings">
			<props>
				<prop key="date_format">yyyy-MM-dd</prop>
				<prop key="time_format">HH:mm:ss</prop>
				<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="number_format">0.######</prop>
				<prop key="defaultEncoding">GBK</prop>
				<prop key="url_escaping_charset">GBK</prop>
				<prop key="locale">zh_CN</prop>
				<prop key="template_update_delay">0</prop>
			</props>
		</property>
		<property name="freemarkerVariables">
			<map>
				<entry key="xml_escape" value-ref="fmXmlEscape" />
				<!--下面四个是在下面定义的-->
				<entry key="extends" value-ref="extendsDirective"/>
			        <entry key="override" value-ref="overrideDirective"/>
			        <entry key="block" value-ref="blockDirective"/>
			        <entry key="super" value-ref="superDirective"/>
			</map>
		</property>
	</bean>
	
	<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" />
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="exposeSpringMacroHelpers" value="true" />
		<property name="requestContextAttribute" value="rc" />
		<property name="prefix" value="/" />
		<property name="suffix" value=".ftl" />
		<property name="contentType" value="text/html;charset=GBK"></property>
	</bean>
	

以下代码是利用 rapid 实现Freemarker 页面继承

<!-- freemaker  Directive-->
	<bean id="blockDirective" class="cn.org.rapid_framework.freemarker.directive.BlockDirective"/>
	<bean id="extendsDirective" class="cn.org.rapid_framework.freemarker.directive.ExtendsDirective"/>
	<bean id="overrideDirective" class="cn.org.rapid_framework.freemarker.directive.OverrideDirective"/>
	<bean id="superDirective" class="cn.org.rapid_framework.freemarker.directive.SuperDirective"/>

下面内容是页面 base.ftl 是最基本的页面 也就是父页面,其内容如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><@block name="popTitle" >原来的title</@block></title>
</head>
<body>

<div>
<h3><@block name="body" >原来的内容</@block></h3>
</div>
</body>
</html>

base1.ftl 内容是继承 base.ftl 内容如下:

<@override name="popTitle"> 
title
</@override>


<@override name="body">
body
</@override>


<@extends name="base.ftl"/>


这样就是实现了Freemarker 的继承、覆盖


freemarker模版继承 扩充freemarker实现模版继承指令<@extends>,可以实现类似java的继承,模版现在也可以继承了,也可以实现接口.freemarker interface,freemarker extends 立即下载

相关推荐

rapid-core:快速云框架核心

Rapid-core RapidJS是一款基于Nodejs的、专门为灵活多变的web业务而设计的服务端开源开发框架。其目标是支撑开发者从业务搭建之初,到产品成长、成熟的整个迭代过程,RapidJS从设计之初便在系统的延展性及适用方式上做了大量考虑。 RapidJS从核心层将整个系统抽象为「plugin」(执行资源),「configure」(配置资源),「resource」(公用资源)三类资源,并尽量使所有功能模块「可插接」、「可替换」、「可公用」, 从而使框架无论在「业务层」,「接入层」或「中间层」中都能出色工作。此外,RapidJS提供了插件机制,开发者能方便地使用和分享插件。 就如同大多数nodejs框架一样,RapidJS也是简洁而富有表现力的。 What is this? rapid将一个系统的各种资源进行划分后抽像为三类资源,即config(配置信息),resource(运行时可

SpringBoot+FreeMarker 学习(六)FreeMarker赋值操作

介绍FreeMarker三种定义变量的方式assign,local,global。

dengdaijc的专栏 1926

C#调用Bartender打印标签,除了打印还能一键导出图片和PDF(附完整代码)

本文详细介绍了如何使用C#集成Bartender实现标签的多格式输出,包括打印、图片和PDF导出。通过完整的代码示例和实战技巧,帮助开发者解决分辨率适配、纸张尺寸控制等核心问题,提升工业自动化和物流管理中的标签处理效率。

weixin_31236101的博客 369

Springboot整合FreeMarker

目录 一、创建项目 二、配置文件 三、语法模板 四、编码 boolean类型 时间类型 ​空值处理 显示数据list if指令 assign指令 global指令 ​项目地址全路径: 一、创建项目 勾选FreeMarker模板引擎 二、配置文件 yml文件中增加配置freemarker freemarker: #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项 allow-request-o...

weixin_52639224的博客 2169

数字IC后端实战:Innovus与ICC2中如何巧妙规避Filler1缺失引发的DRC问题?

本文针对数字IC后端设计中工艺厂不提供最小填充单元Filler1的常见挑战,深入剖析了由此引发的DRC问题根源。详细对比了在Cadence Innovus和Synopsys ICC2两大主流PR工具中,如何通过设置单元间距约束来系统性规避物理缝隙,确保电源网络完整性与制造可靠性,为工程师提供了一套稳健的实战解决方案。

weixin_29303701的博客 306

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

Spring Boot 最佳实践(三)模板引擎FreeMarker集成

一、FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT、电子邮件、配置文件、源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组件。 FreeMarker最初设计是用来在MVC模式的Web开发中生成HTML页面的,所以没有绑定Servlet或任意Web相关的东西上,所以它可以运行在非Web应用环境中。 发展史 FreeMark...

weixin_33856370的博客 476

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 241

spring boot配置freemarker--autoIncludes

最近公司新开了个项目用了freemarker,在用宏的时候想在所有的模版都自动注入所以的宏模版。去看了spring boot的自动化配置的源码。感觉spring boot的配置好的spring boot不用变,想在spring boot的congiguration上改。 先注入spring boot的freemarkerProperties

夏夜的风的博客 3699

《QT+PCL》点云配准进阶——GROR配准

GROR点云配准

阁楼 1318

灰色预测GM(1,n)模型_python

灰色系统理论及其应用系列博文: 一、灰色关联度分析法(GRA)_python 二、灰色预测模型GM(1,1) 文章目录一、GM(1,n)算法二、示例2.1 数据:2.2 代码_使用GM(1,n)城市用水总量2.3 结果分析 一、GM(1,n)算法 二、示例 注:数据均来自论文《基于灰色系统理论的贵阳市城市用水总量预测》 2.1 数据: data.csv 年份,城区人口,建成区面积,供水总量,用水人口,人口综合用水指标,城市用水总量 2002, 191.85, 98.00, 26396.00,

qq_34229228的博客 1万+

重写Spring MVC中FreeMarker封装的宏

为什么80%的码农都做不了架构师?>>> ...

weixin_34178244的博客 256

基于 Qt C++ 的智能工厂数字孪生系统

你想要实现一个基于 Qt C++ 的智能工厂数字孪生系统,核心是 **Qt 3D** 场景搭建 + **实时数据驱动** 设备模型。下面我将为你提供一个完整的解决方案,包含 **核心思路、实现步骤、完整代码示例** 和 **注意事项**。| **渲染层** | 3D 场景搭建、设备模型加载、实时动画渲染、用户交互。| **业务逻辑层** | 数据处理(滤波、转换)、设备状态管理、动画逻辑控制。| **数据层** | 实时采集设备数据(如传感器、PLC、MES 系统),提供数据接口。

寒寒豆豆软件公司的博客 193

rapid-framework强化freemarker模板继承在struts下也可以用

freemarker的模板是没有继承功能的。rapid-framework提供了几个directive实现了这个功能。 不过官方文档上给出的例子只有跟spring-mvc的支持 struts的展示层支持做的比较死,只靠修改配置无法实现。当然更可能是我没有发现,如果您知道往不吝

easyroom的专栏 2503

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

freemarker继承,实现模板的继承

现扩展freemarker,新增加三个指令: @extends,@block,@override 一.目的 父模板页面定义好布局,子模板可以重定义布局中的部分内容 使模板可以实现类似"类"的继承关系,并不限继承层次 二.继承概榄 父模板: base.ftl  &lt;html&gt;      &lt;head&gt;          &lt;@block name="head"&gt...

bingguang1993的博客 1797

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Freemarker继承模板和自定义模板的使用

Freemarker模板可以省下很多时间,特别是一个框架类型的web工程或者pdf模板等都很适用。 不多说废话直接说重点: 1.配置freemarker视图解析器 freemarker视图解析器我们常用的是jsp视图解析器,可以多个解析器一起使用的哦! &lt;bean id="viewResolverFtl" class="org.springframework.web.servlet...

辉之素狂 2206

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

freemarker代码生成

代码生成 用一事例讲解代码生成 1. 首先写一个类,如TitanPluginExporter 让其继承GenericExporter类。在该类中有一个init方法,该方法的作用是设置模板的路径和生成文件的类型。 pub...

cskvwpo01611的博客 147

说明freemarker,实现模板的继承

现扩展freemarker,新增加三个指令: @extends,@block,@override 一.目的 父模板页面定义好布局,子模板可以重定义布局中的部分内容 使模板可以实现类似"类"的继承关系,并不限继承层次 二.继承概榄 父模板: base.ftl html>       head>           @block name="head">base_head_c

oceansky123的专栏 4271

Struts2自定义Theme

1. Struts2 Theme与WebWork Theme     用法上是一样的,几乎没有差别,默认都是xhtm,区别就是将WebWork的配置改成了Struts的配置2. Theme的作用     Theme可以理解为模版,struts ui标签都有与之对应的模版,可以解压struts2-all-2.0.1.jar来看看,里面有template目录,打开xhtm查看struts ui标签

3784

springboot使用Freemarker继承

springboot 使用Freemarker继承 最近需要用到Freemarker的继承。但是发现没有关于springboot配置Freemarker的继承的。所以趁现在有时间写个博客。 1. Freemarker继承介绍Freemarker 通过 rapid java实现继承。实际是rapid的jar包提供的三个自定义标签。实现继承用到的有三个标签:@extends,@block ,@ove

liuYinXin的博客 3004

扩展freemarker,实现模板的继承

  现扩展freemarker,新增加三个指令: @extends,@block,@override   一.目的   父模板页面定义好布局,子模板可以重定义布局中的部分内容 使模板可以实现类似"类"的继承关系,并不限继承层次   二.继承概榄 父模板: base.ftl   &lt;html&gt; &lt;head&gt; &lt;@block na...

245

Freemarker基本语法

总结来说,要使用Freemarker生成静态文件,你可以使用Java程序调用Freemarker进行渲染并输出到文件,或者结合静态网站生成器进行生成。1.使用Java程序调用Freemarker:你可以编写一个Java程序,使用Freemarker来渲染模板,并将渲染结果输出到文件。需要注意的是,指令的结束标签是必须的,在循环体内部的内容将被迭代多次。除了内建函数,Freemarker还支持自定义函数,可以在模板中使用自己定义的函数来进行特定的处理。操作符来连续访问键。

m0_61898915的博客 3204

Freemarker自定义方法变量

最近在项目开发中使用了freemarker,并在前台显示文本时遇到这样一个需求,当长度超过10个字时只显示出前面10个字,并在后面加...。这里就可以在freemarker中实现一个自定义方法变量。 实现自定义方法变量基本步骤: 1.先实现TemplateMethodModel或TemplateMethodModelEx接口(TemplateMethodModelEx 继承自TemplateMethodModel 接口,我这里使用的是TemplateMethodModelEx接口),再覆盖该接口的Ob..

daobuxinzi的博客 889
上一篇: freemarker 宏机制
下一篇: Mybatis 学习笔记 1(非原创 自己整理)
趙大叔
博客等级 码龄17年 34粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趙大叔

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值