badqiu

          XPer
          隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
          數據加載中……

          擴展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());  

          以上三個指令屬于rapid-framework的擴展,后續新版本發布將包含該項擴展,敬請關注。具體指令源碼請查看:
            http://rapid-framework.googlecode.com/svn/trunk/rapid-framework/src/rapid_framework_common/cn/org/rapid_framework/freemarker/directive/

          posted on 2009-12-22 23:47 badqiu 閱讀(3776) 評論(1)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长治县| 嘉禾县| 永德县| 昌江| 珠海市| 青田县| 黄冈市| 城步| 上虞市| 曲水县| 米泉市| 朝阳市| 乐业县| 湖南省| 黄陵县| 宜宾县| 北海市| 苍梧县| 高邮市| 武川县| 南郑县| 贺州市| 托克托县| 阜平县| 临夏市| 高青县| 灵寿县| 获嘉县| 绥化市| 长沙县| 古浪县| 蓬莱市| 乐山市| 尉犁县| 武义县| 胶南市| 宁津县| 天峨县| 宣武区| 交城县| 南和县|