说明freemarker,实现模板的继承


现说明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()); 


PS :项目中的配置,如:springmvc-servlet.xml

<!-- freemarker config for FreeMarkerViewResolver -->
    <bean id="freemarkerConfig"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/freemarker/" />
        <property name="defaultEncoding" value="GBK" />
        <property name="freemarkerVariables">
            <map>
                <entry key="extends" value-ref="extendsDirective"></entry>
                <entry key="override" value-ref="overrideDirective"></entry>
                <entry key="block" value-ref="blockDirective"></entry>
                <entry key="super" value-ref="superDirective"></entry>
            </map>
        </property>
    </bean>




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值