Groovy 模板引擎

2022-07-21 11:32 更新

Groovy的模板引擎的操作方式類似于郵件合并(從數(shù)據(jù)庫自動添加名稱和地址到字母和信封,以便于將郵件,特別是廣告發(fā)送到許多地址),但是它更加通用。

字符串中的簡單模板

如果你采用下面的簡單例子,我們首先定義一個名稱變量來保存字符串“Groovy”。在println語句中,我們使用$符號來定義可以插入值的參數(shù)或模板。

def name = "Groovy" 
println "This Tutorial is about ${name}"

如果上面的代碼在groovy中執(zhí)行,將顯示以下輸出。輸出清楚地顯示$名稱被由def語句分配的值替換。

簡單模板引擎

以下是SimpleTemplateEngine的示例,它允許您在模板中使用類似于JSP的scriptlet和EL表達式,以生成參數(shù)化文本。模板引擎允許綁定參數(shù)列表及其值,以便可以在具有定義的占位符的字符串中替換它們。

def text ='This Tutorial focuses on $TutorialName. In this tutorial you will learn 

about $Topic'  

def binding = ["TutorialName":"Groovy", "Topic":"Templates"]  
def engine = new groovy.text.SimpleTemplateEngine() 
def template = engine.createTemplate(text).make(binding) 

println template

如果上面的代碼在groovy中執(zhí)行,將顯示以下輸出。

現(xiàn)在讓我們使用XML文件的模板功能。作為第一步,讓我們將下面的代碼添加到一個名為Student.template的文件中。在以下文件中,您將注意到,我們尚未添加元素的實際值,而是添加占位符。所以$ name,$ is和$ subject都被放置為占位符,需要在運行時替換。

<Student> 
   <name>${name}</name> 
   <ID>${id}</ID> 
   <subject>${subject}</subject> 
</Student>

現(xiàn)在,讓我們添加我們的Groovy腳本代碼來添加功能,可以使用實際值替換上面的模板。應(yīng)該注意以下事項關(guān)于以下代碼。

  • 占位符到實際值的映射通過綁定和SimpleTemplateEngine完成。綁定是一個映射,占位符作為鍵,替換值作為值。

import groovy.text.* 
import java.io.* 

def file = new File("D:/Student.template") 
def binding = ['name' : 'Joe', 'id' : 1, 'subject' : 'Physics']
				  
def engine = new SimpleTemplateEngine() 
def template = engine.createTemplate(file) 
def writable = template.make(binding) 

println writable

如果上面的代碼在groovy中執(zhí)行,將顯示以下輸出。從輸出中可以看出,在相關(guān)占位符中成功替換了值。

<Student> 
   <name>Joe</name> 
   <ID>1</ID> 
   <subject>Physics</subject> 
</Student>

StreamingTemplateEngine

StreamingTemplateEngine引擎是Groovy中可用的另一個模板引擎。這類似于SimpleTemplateEngine,但是使用可寫的閉包創(chuàng)建模板,使其對于大模板更具可擴展性。特別是這個模板引擎可以處理大于64k的字符串。

以下是如何使用StreamingTemplateEngine的示例 -

def text = '''This Tutorial is <% out.print TutorialName %> The Topic name 

is ${TopicName}''' 
def template = new groovy.text.StreamingTemplateEngine().createTemplate(text)
  
def binding = [TutorialName : "Groovy", TopicName  : "Templates",]
String response = template.make(binding) 
println(response)

如果上面的代碼在groovy中執(zhí)行,將顯示以下輸出。

This Tutorial is Groovy The Topic name is Templates

XMLTemplateEngine

XmlTemplateEngine用于模板方案,其中模板源和預(yù)期輸出都是XML。模板使用正常的$ {expression}和$ variable表示法將任意表達式插入到模板中。

以下是如何使用XMLTemplateEngine的示例。

def binding = [StudentName: 'Joe', id: 1, subject: 'Physics'] 
def engine = new groovy.text.XmlTemplateEngine() 

def text = '''
   <document xmlns:gsp='http://groovy.codehaus.org/2005/gsp'>
      <Student>
         <name>${StudentName}</name>
         <ID>${id}</ID>
         <subject>${subject}</subject>
      </Student>
   </document> 
''' 

def template = engine.createTemplate(text).make(binding) 
println template.toString()

如果上面的代碼在groovy中執(zhí)行,將顯示以下輸出

<document> 
   <Student> 
      <name> 
         Joe 
      </name> 
      <ID> 
         1 
      </ID> 
      <subject> 
         Physics 
      </subject>
   </Student> 
</document> 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號