<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 2.2 自定義方法 [TOC] ### 2.2.1 實現Function ```java public class Print implements Function{ public String call(Object[] paras, Context ctx){ Object o = paras[0]; if (o != null){ try{ ctx.byteWriter.write(o.toString()); }catch (IOException e){ throw new RuntimeException(e); } } return ""; } } ``` call方法有倆個參數,第一個是數組,這是由模板傳入的,對應著模板的參數,第二個是Context,包含了模板的上下文,主要提供了如下屬性 - byteWriter 輸出流 - template 模板本身 - gt GroupTemplate - globalVar 該模板對應的全局變量 - byteOutputMode 模板的輸出模式,是字節還是字符 - safeOutput 模板當前是否處于安全輸出模式 - 其他屬性建議不熟悉的開發人員不要亂動 > 1. call方法要求返回一個Object,如果無返回,返回null即可 > 2. 為了便于類型判斷,call方法最好返回一個具體的類,如date函數返回的就是java.util.Date > 3. call方法里的任何異常應該拋出成Runtime異常 ### 2.2.2 使用普通的java類 盡管實現Function對于模板引擎來說,是效率最高的方式,但考慮到很多系統只有util類,這些類里的方法仍然可以注冊為模板函數。其規則很簡單,就是該類的所有public方法。如果還需要Context 變量,則需要在方法最后一個參數加上Context即可,如 ```java public class util{ public String print(Object a, Context ctx){ //balabala... } } ``` 注意 > 1. 從beetl效率角度來講,采用普通類效率不如實現Function調用 > 2. 采用的普通java類盡量少同名方法。這樣效率更低。beetl調用到第一個適合的同名方法。而不像java那樣找到最匹配的 > 3. 方法名支持可變數組作為參數 > 4. 方法名最后一個參數如果是Context,則beetl會傳入這個參數。 ### 2.2.3 使用模板文件作為方法 可以不用寫java代碼,模板文件也能作為一個方法。默認情況下,需要將模板文件放到Root的functions目錄下,且擴展名為.html(可以配置文件屬性來修改這倆個默認值) 方法參數分別是para0,para1….. 如下root/functions/page.fn ```javascript <% //para0,para1 由函數調用傳入 var current = para0,total = para1,style=para2!'simple' %> 當前頁面 ${current},總共${total} ``` 則在模板中 ```javascript <% page(current,total); %> ``` 允許使用return 表達式返回一個變量給調用者,如模板文件functions\now.html ```javascript <% return date(); %> ``` 在任何模板里都可以調用: ```javascript hello time is ${now(),'yyyy-MM-dd'} ``` 也可以在functions建立子目錄,這樣function則具有namespace,其值就是文件夾名
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看