Spring Web MVC-07-springmvc 整合 freemarker 并且实现继承 @block @override @extends
2019年12月25日大约 2 分钟
继承的目的
父模板页面定义好布局,子模板可以重定义布局中的部分内容
使模板可以实现类似"类"的继承关系,并不限继承层次
继承概榄
父类
- base.ftl
base_head_content
base_body_content
子类
- child.ftl
Powered By rapid-framework
结果
base_head_content
Powered By rapid-framework
可以看到,body部分被重定义了,而head部分则还是显示父模板的内容。
指令说明
@block : 定义块,可以被子模板用@override指令覆盖显示
@override : 覆盖@block指令显示的内容
@extends : 继承其它模板,必须放在模板的最后面(注:该指令完全等价于#include指令,只是为了提供统一的语义,即extends比include更好理解)
使用说明
要使用如上三个自定义指令,必须在freeemarker的Configuration中注册。
注解的注册方式
@Configuration
public class FreemarkerConfiguration {
@Autowired
freemarker.template.Configuration configuration;
@PostConstruct
public void setSharedVariable(){
configuration.setSharedVariable("block", new BlockDirective());
configuration.setSharedVariable("override", new OverrideDirective());
configuration.setSharedVariable("extends", new ExtendsDirective());
}
}
xml 的注册方式
0
zh_CN
yyyy-MM-dd
yyyy-MM-dd
#.##
访问效果
直接访问,内容如下:
base_head_content
Powered By rapid-framework
参考资料
贡献者
binbin.hou