现扩展freemarker,新增加三个指令: @extends,@block,@override
一.目的
- 父模板页面定义好布局,子模板可以重定义布局中的部分内容
- 使模板可以实现类似"类"的继承关系,并不限继承层次
二.继承概榄
父模板: base.ftl
<html>
<head>
<@block name="head">base_head_content</@block>
</head>
<body>
<@block name="body">base_body_content</@block>
</body>
</html>
子模板child.ftl
<@override name="body">
<div class='content'>
Powered By rapid-framework
</div>
</@override>
<@extends name="base.flt"/>
子模板child.ftl输出
<html>
<head>
base_head_content
</head>
<body>
<div class='content'>
Powered By rapid-framework
</div>
</body>
</html>
可以看到,body部分被重定义了,而head部分则还是显示父模板的内容。
三.指令介绍
- @block : 定义块,可以被子模板用@override指令覆盖显示
- @override : 覆盖@block指令显示的内容
- @extends : 继承其它模板,必须放在模板的最后面(注:该指令完全等价于#include指令,只是为了提供统一的语义,即extends比include更好理解)
四.使用说明
要使用如上三个自定义指令,必须在freeemarker的Configuration中注册。
使用如下代码:
configuration.setSharedVariable("block", new BlockDirective());
configuration.setSharedVariable("override", new OverrideDirective());
configuration.setSharedVariable("extends", new ExtendsDirective());
分享到:
相关推荐
rapid-core 扩展freemarker实现了模板继承 ## 2. 闪现消息 > 在Spring MVC中,被@RequestMapping注解的方法,可以接收 > RedirectAttributes ra参数,通过ra.addFlashAttribute(key,value) > 可以向模板文件中...
在JEECMS v2.3.1中,我们新增了一套官方模板,新模板以红色为主,更加大气美观,同时也保留了原来的模板,用户可以通过切换模板方案实现整个网站的换肤工作。 二、轻松建立并管理多站点,全站实现单点登录 在v...
允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,没有实现,getter,setter方法)对象 作为Action,没有耦合 Action的execute 默认方法不再与Servlet API耦合,更易测试 支持更多视图技术(JSP(转译java...
6、添加 IDbProFactory,支持继承 DbPro 来定制 DbPro 功能 7、文件上传支持input域使用同名name属性 JFinal有如下主要特点 MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db Record模式,灵活...
基于FreeMarker模板语言,并且模板易于修改 基于数据库,内建好数据库的model,并支持多种数据库(mysql,sql server,oracle测试通过) 半手工方式,生成的代码放在某个目录,再手工拷贝回来工作区 易于做二次开发,整个生成...
Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...
8.3.2 FreemarkerResult,也叫做freemarker 191 8.4 全局结果 192 8.5 小结 193 第四部分 完善应用程序 第9章 集成Spring和Hibernate/JPA 196 9.1 为什么在Struts 2中使用Spring 196 9.1.1 依赖注入能做些什么 197 ...
4.3.1 扩展拦截器接口的自定义拦截器配置 54 4.3.2 继承抽象拦截器的自定义拦截器配置 56 4.3.3 继承方法拦截器的自定义拦截器配置 58 4.4 Struts2文件上传拦截器应用 61 4.4.1 Struts2文件上传功能开发 61 4.4.2 ...
终端统一: 铭飞MCMS支持PC与MOBILE皮肤定制,同时使用MS团队移动JS插件,轻松实现手机多屏幕适配,想想看你发布的信息第一时间在PC上展示又能在手机上展示,这是件多么幸福的事情,数据统一、平台统一、终端统一是MS团队...
3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. ApplicationContext 3.8.1. 利用...
继承starter parent ii. 13.1.2. 使用没有父POM的Spring Boot iii. 13.1.3. 改变Java版本 iv. 13.1.4. 使用Spring Boot Maven插件 ii. 13.2. Gradle iii. 13.3. Ant iv. 13.4. Starter POMs ii. 14. 组织你的代码 i...
通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。 > zheng-wechat-mp 微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理...
14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...
3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. The ApplicationContext 3.8.1. ...
3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.1.1. 使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用...
3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. ApplicationContext 3.8.1. 利用...