mq翻譯主題模板中的代碼 編程寶庫(kù)
日期:2023-03-11 12:39:36 / 人氣: 416 / 發(fā)布者:成都翻譯公司
這些對(duì)象負(fù)責(zé)確定如何訪問(wèn)模板,在這個(gè)GTVG應(yīng)用程序中,org.ServletContextTemplateResolver我們將從Servlet上下文中檢索模板文件作為資源的方式:javax.模板引擎對(duì)象是org.模板解析器是唯一需要的參數(shù)TemplateEngine,盡管稍后將介紹許多其他參數(shù)(消息解析器,緩存大小等)。多語(yǔ)言文本我們的第一個(gè)任務(wù)是為我們的雜貨網(wǎng)站創(chuàng)建一個(gè)主頁(yè)。Thymeleaf 主題商店
本指南的這一章和后續(xù)章節(jié)中顯示的示例的源代碼可以在 Good Thymes Virtual Grocery GitHub 存儲(chǔ)庫(kù)中找到。
1. 網(wǎng)上商店
為了更好地解釋使用 Thymeleaf 處理模板所涉及的概念mq翻譯主題模板中的代碼,本教程將使用可從項(xiàng)目網(wǎng)站下載的演示應(yīng)用程序。
這個(gè)應(yīng)用程序是一個(gè)虛構(gòu)的虛擬雜貨網(wǎng)站,將為我們提供許多場(chǎng)景來(lái)展示 Thymeleaf 的許多功能。
首先,我們的應(yīng)用程序需要一組簡(jiǎn)單的模型實(shí)體:通過(guò)創(chuàng)建產(chǎn)品進(jìn)行銷(xiāo)售。我們還將管理這些:CustomersOrdersCommentsProducts。
我們的應(yīng)用程序還有一個(gè)非常簡(jiǎn)單的服務(wù)層,由包含以下方法的 Service 對(duì)象組成:
public class ProductService { ... public ListfindAll() { return ProductRepository.getInstance().findAll(); } public Product findById(Integer id) { return ProductRepository.getInstance().findById(id); } }
在 web 層,我們的應(yīng)用程序?qū)⒂幸粋€(gè)過(guò)濾器,它將根據(jù)請(qǐng)求 URL 將執(zhí)行委托給啟用了 Thymeleaf 的命令:
private boolean process(HttpServletRequest request, HttpServletResponse response) throws ServletException { try { // This prevents triggering engine executions for resource URLs if (request.getRequestURI().startsWith("/css") || request.getRequestURI().startsWith("/images") || request.getRequestURI().startsWith("/favicon")) { return false; } /* * Query controller/URL mapping and obtain the controller * that will process the request. If no controller is available, * return false and let other filters/servlets process the request. */ IGTVGController controller = this.application.resolveControllerForRequest(request); if (controller == null) { return false; } /* * Obtain the TemplateEngine instance. */ ITemplateEngine templateEngine = this.application.getTemplateEngine(); /* * Write the response headers */ response.setContentType("text/html;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); /* * Execute the controller and process view template, * writing the results to the response writer. */ controller.process( request, response, this.servletContext, templateEngine); return true; } catch (Exception e) { try { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } catch (final IOException ignored) { // Just ignore this } throw new ServletException(e); } }
這是我們的 IGTVGController 接口:
public interface IGTVGController { public void process( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, ITemplateEngine templateEngine); }
我們現(xiàn)在要做的就是創(chuàng)建 IGTVGController 接口的實(shí)現(xiàn),從服務(wù)中檢索數(shù)據(jù)并使用 ITemplateEngine 對(duì)象來(lái)處理模板。
但首先讓我們看看模板引擎是如何初始化的。
2. 創(chuàng)建和配置模板引擎
我們過(guò)濾器中的 process(...) 方法包含以下幾行:
ITemplateEngine templateEngine = this.application.getTemplateEngine();
這意味著 GTVGApplication 類(lèi)負(fù)責(zé)創(chuàng)建和配置 Thymeleaf 應(yīng)用程序中*重要的對(duì)象之一:TemplateEngine 實(shí)例(ITemplateEngine 接口的實(shí)現(xiàn))。
我們的 org.thymeleaf.TemplateEngine 對(duì)象初始化如下:
public class GTVGApplication { ... private final TemplateEngine templateEngine; ... public GTVGApplication(final ServletContext servletContext) { super(); ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext); // HTML is the default mode, but we set it anyway for better understanding of code templateResolver.setTemplateMode(TemplateMode.HTML); // This will convert "home" to "/WEB-INF/templates/home.html" templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); // Template cache TTL=1h. If not set, entries would be cached until expelled templateResolver.setCacheTTLMs(Long.valueOf(3600000L)); // Cache is set to true by default. Set to false if you want templates to // be automatically updated when modified. templateResolver.setCacheable(true); this.templateEngine = new TemplateEngine(); this.templateEngine.setTemplateResolver(templateResolver); ... } }
有很多方法可以配置 TemplateEngine 對(duì)象,但是現(xiàn)在這幾行代碼足以告訴我們所需的步驟。
3. 模板解析器
讓我們從模板解析器開(kāi)始:
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
模板解析器是一個(gè)實(shí)現(xiàn) Thymeleaf API 接口的對(duì)象,名為 org.thymeleaf.templateresolver.ITemplateResolver:
public interface ITemplateResolver { ... /* * Templates are resolved by their name (or content) and also (optionally) their * owner template in case we are trying to resolve a fragment for another template. * Will return null if template cannot be handled by this template resolver. */ public TemplateResolution resolveTemplate( final IEngineConfiguration configuration, final String ownerTemplate, final String template, final MaptemplateResolutionAttributes); }
這些對(duì)象負(fù)責(zé)確定如何訪問(wèn)模板。在這個(gè) GTVG 應(yīng)用程序 org.thymeleaf.templateresolver.ServletContextTemplateResolver 中,我們將從 Servlet 上下文中檢索模板文件作為資源: javax.servlet.ServletContext 存在于每個(gè) Java Web 應(yīng)用程序中 應(yīng)用程序范圍的對(duì)象和資源是從 Web 應(yīng)用程序根解析的.
但這并不是我們可以說(shuō)的模板解析器的全部,因?yàn)槲覀兛梢栽谄渖显O(shè)置一些配置參數(shù)。一、模板模式:
templateResolver.setTemplateMode(TemplateMode.HTML);
HTML 是默認(rèn)模板模式 ServletContextTemplateResolver,但*好構(gòu)建它,以便我們的代碼清楚地記錄正在發(fā)生的事情。
templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html");
修改前綴和后綴,我們將模板名稱(chēng)傳遞給引擎,以獲取真正要使用的資源名稱(chēng)。
使用此配置,模板名稱(chēng)“產(chǎn)品/列表”將對(duì)應(yīng)于:
servletContext.getResourceAsStream("/WEB-INF/templates/product/list.html")
(可選)在模板解析器中通過(guò) cacheTTLMs 屬性配置解析模板可以在緩存中存活的時(shí)間量:
templateResolver.setCacheTTLMs(3600000L);
如果達(dá)到*大緩存大小并且它是當(dāng)前緩存中*舊的條目,則在達(dá)到 TTL 之前,模板仍然可以從緩存中排除。
用戶(hù)可以通過(guò)實(shí)現(xiàn) ICacheManager 接口或修改 StandardCacheManager 對(duì)象來(lái)定義緩存行為和大小來(lái)管理默認(rèn)緩存。
關(guān)于模板解析器還有很多需要學(xué)習(xí),但現(xiàn)在讓我們看看模板引擎對(duì)象的創(chuàng)建。
4. 模板引擎
模板引擎對(duì)象是 org.thymeleaf.ITemplateEngine 接口的實(shí)現(xiàn)。其中一個(gè)實(shí)現(xiàn)由 Thymeleaf 核心提供:org.thymeleaf.TemplateEngine 我們?cè)谶@里創(chuàng)建一個(gè)實(shí)例:
templateEngine = new TemplateEngine(); templateEngine.setTemplateResolver(templateResolver);
很簡(jiǎn)單mq翻譯主題模板中的代碼,不是嗎?我們所需要的只是創(chuàng)建一個(gè)實(shí)例并將模板解析器設(shè)置為它。
模板解析器是唯一需要的參數(shù)TemplateEngine,雖然很多其他參數(shù)(消息解析器、緩存大小等)會(huì)在后面介紹。現(xiàn)在這就是我們所需要的。
我們的模板引擎現(xiàn)已準(zhǔn)備就緒,我們可以使用 Thymeleaf 開(kāi)始創(chuàng)建頁(yè)面。
下一節(jié):Thymeleaf 文字 Thymeleaf 教程
1. 多語(yǔ)言文本 我們的第一個(gè)任務(wù)是為我們的雜貨網(wǎng)站創(chuàng)建一個(gè)主頁(yè)。這個(gè)頁(yè)面的第一個(gè)版本非常簡(jiǎn)單:只有標(biāo)題和歡迎信息。這是我們的 /WEB-INF/templates/home.html 文件:
相關(guān)閱讀Relate
熱門(mén)文章 Recent
- 銀行詢(xún)證函翻譯模板 關(guān)于進(jìn)一步規(guī)范銀行函證及回函工作的通知?財(cái)會(huì)[2016]13號(hào)2023-03-11
- 英國(guó)簽證銀行翻譯模板 英國(guó)簽證材料翻譯件上還要翻譯公章嗎?2023-03-11
- 翻譯批評(píng)與賞析模板2023-03-11
- 翻譯者模板 貴陽(yáng)的圖書(shū)翻譯模板2023-03-11
- 材料專(zhuān)業(yè)成績(jī)單翻譯模板下載 美國(guó)留學(xué)個(gè)人簡(jiǎn)歷要怎么寫(xiě) 申請(qǐng)美國(guó)留學(xué)需要哪些材料2023-03-11
- 英文名翻譯成中文公證模板 怎么找英文合同翻譯公司?2023-03-11
- 房產(chǎn)證附記抵押翻譯件模板 只有土地使用證的房子能賣(mài)嗎?2023-03-11
- 北卡羅來(lái)納大學(xué)學(xué)位證書(shū)翻譯模板 北卡羅萊納州立大學(xué)2023-03-11
- 新南威爾士大學(xué)2023-03-11
- 西語(yǔ)公證書(shū)翻譯模板 美國(guó)紐約州公證書(shū)翻譯蓋章2023-03-11