<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 2.16 直接運行Beetl腳本 Beetl模板本質上會轉化為Beetl腳本來執行,這點跟jsp轉為servlet來執行類似。BeetlSQL支持3種運行腳本方式 ### 2.16.1 javax.script.ScriptManager 集成 Beetl集成了javax.script.ScriptManager,可以更為方便的使用腳本語言 ```java //初始化部分,beetlEngine應該做為單例使用 ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine beetlEngine = scriptEngineManager.getEngineByName("beetl"); //一個簡單例子 SimpleBindings simpleBindings = new SimpleBindings(); simpleBindings.put("arg",arg); Map map = null; try { map = (Map)beetlEngine.eval("return arg.age+(arg.pay+12);",simpleBindings); return map.get("return"); } catch (ScriptException e) { System.out.println(e); } ``` 執行腳本完畢后,返回到Map里的值可能包含如下: - 模板的**頂級**的臨時變量,key為臨時變量名,value為值 - return 將返回到map里 ,key為"return" 異常e是ScriptException的子類BeetlScriptException,異常信息包含了具體的異常,異常位置。 ### 2.16.2 Scriipt對象 直接調用 在上面的例子,BeetlScriptEngine是ScriptEngine的子類,他實際執行了Beetl的內置的Script功能。,可以掉用getScript方法獲取Script對象 ```java StringTemplateResourceLoader loader = new StringTemplateResourceLoader(); GroupTemplate gt = getGroupTemplate(); //假設從某處獲GroupTemplate String str = "var a=1+b;return a;" Script script = gt.getScript(str,loader); //必須使用StringTemplateResourceLoader記載字符串腳本 Map map = new HashMap(); map.put("b",2); script.binding(map); script.execute(); if(script.isSuccess()){ return script.getResult(); //返回Map,包含了變量a,以及變量"return" } ErrorInfo error = script.getErrorInfo(); System.out.println(error) //打印出錯詳情 ``` 注意:這種方式性能比集成ScriptManager稍微好些。 也可以獲取Script對象后,調用validate方法驗證模板本生是否語法合格 ```java String str = "var a=1+b;return a;" Script script = gt.getScript(str,loader); BeetlExeception ex = script.validate(); if(ex!=null){ ErrorInfo error = new ErrorInfo(ex) //轉化成更好處理的ErrorInfo對象 System.out.println(error) //打印出錯詳情 } ``` 對于集成ScriptEngine的例子,你可以獲得Script對象做校驗 ```java BeetlScriptEngine beetlEngine = (BeetlScriptEngine)scriptEngineManager.getEngineByName("beetl"); Script script = beetlEngine.getScript(strScript); //其他代碼同上 ``` ### 2.16.3 GroupTemplate直接調用 GroupTemplate提供方法可以直接執行Beetl腳本,直接得出結果(不推薦了) - public Map runScript(String key, Map<String, Object> paras) throws ScriptEvalError - public Map runScript(String key, Map<String, Object> paras, Writer w) throws ScriptEvalError - public Map runScript(String key, Map<String, Object> paras, Writer w, ResourceLoader loader) throws ScriptEvalError key為資源名,這里是腳本字符串,paras為腳本的全局變量,w可選參數,如果執行腳本有輸出,則輸出到w里,loader參數可選,如果指定,則使用此laoder加載腳本 執行腳本完畢后,返回到Map里的值可能包含如下: - 模板的**頂級**的臨時變量,key為臨時變量名,value為值 - return 值將返回到map里 ,key為return 如下腳本(此時就不需要腳本定界符了) ```javascript var a = 1; var b = date(); var c = '2'; return a+1; ``` 調用runScript后,map里將返回key分別為a,b,c,return。 值分別為1,當前日期,字符串'2,以及3。 groupTemplate.validateScript 可以用于校驗模板是否正確,如果不正確,返回BeetlException ~~~java BeetlException ex = groupTemplate.validateScript(script); if(ex!=null){ ErrorInfo info = new ErrorInfo(ex); System.out.println(info.toString()); } ~~~
                  <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>

                              哎呀哎呀视频在线观看