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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 含山县| 阿坝县| 龙岩市| 麦盖提县| 呼伦贝尔市| 蒙阴县| 尤溪县| 兴山县| 土默特右旗| 阳谷县| 西林县| 蒲城县| 澳门| 高青县| 横山县| 长海县| 七台河市| 红安县| 洪江市| 广东省| 义马市| 天门市| 松滋市| 阜南县| 高雄县| 吴川市| 阿拉善右旗| 涿州市| 盐津县| 沙洋县| 高雄县| 阳谷县| 瓮安县| 清河县| 武平县| 盐亭县| 南充市| 旬邑县| 大石桥市| 南召县| 获嘉县|