W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
自定義模板引擎。
下面我們簡(jiǎn)單的介紹一下 Hasor 的自定義模板引擎配置方式。首先,接入一個(gè)渲染引擎需要實(shí)現(xiàn) RenderEngine 接口,如下:
public class UserRender implements RenderEngine {
public void initEngine(AppContext appContext) throws Throwable {
...
}
public boolean exist(String template) throws IOException {
...
}
public void process(RenderInvoker renderData, Writer writer) throws Throwable {
...
}
}
其中,initEngine 方法是整個(gè)渲染引擎的初始化方法,它只會(huì)執(zhí)行一次。然后是 exist 方法,它是在執(zhí)行模板之前進(jìn)行調(diào)用。用于判斷渲染引擎是否支某個(gè)資源。當(dāng) exist 正確返回 true 之后,視圖框架就會(huì)正式調(diào)用 process 進(jìn)行頁面的渲染。此時(shí)開發(fā)者只需要把模板的執(zhí)行結(jié)果輸出到 writer 中即可在瀏覽器中顯示出來。
如果 exist 返回了 false。 那么框架會(huì)將 template 這個(gè)資源的渲染交給 Servlet 容器。這就意味著,一旦 exist 為 true 那么 Servlet 容器就不會(huì)有機(jī)會(huì)處理這個(gè)模板資源的渲染工作。
最后當(dāng)渲染器開發(fā)完畢,您還需要將它注冊(cè)到 Hsor 容器中。您有兩種方式進(jìn)行注冊(cè):
第一種,注解方式:
@Render({ "html", "htm" })
public class UserRender implements RenderEngine {
...
}
// -----
public class StartModule extends WebModule {
public void loadModule(WebApiBinder apiBinder) throws Throwable {
//掃描所有 Render 注解
apiBinder.scanAnnoRender();
}
}
第二種,代碼方式注冊(cè)。此時(shí)不需要 @Render 注解:
public class UserRender implements RenderEngine {
...
}
// -----
public class StartModule extends WebModule {
public void loadModule(WebApiBinder apiBinder) throws Throwable {
apiBinder.suffix("html", "htm").bind(UserRender.class);
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: