字符串中的简单模板
$可以用于分配的值替换
def name = "Groovy"
println "This Tutorial is about ${name}"
简单的模板引擎-SimpleTemplateEngine
使用SimpleTemplateEngine类可以再模板中使用类似JSP的scriptlet和EL表达式,用来生成参数化文本。
模板引擎允许绑定参数列表以及值,以便可以在具有占位符的字符串中替换他们:
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
如果使用XML文件作为模板功能,例如一个Student.template的文件中有如下内容:
<Student>
<name>${name}</name>
<ID>${id}</ID>
<subject>${subject}</subject>
</Student>
然后在代码中执行:
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
可以得到输出
<Student>
<name>Joe</name>
<ID>1</ID>
<subject>Physics</subject>
</Student>
闭包创建模板-StreamingTemplateEngine
StreamingTemplateEngine可以使用可写的闭包创建模板,对于大模板更具可扩展性
这个引擎还可以处理大于64k的字符串。
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)
XML文件的模板-XMLTemplateEngine
XMLTemplateEngine的模板源和预期输出都是XML,也使用${expressing}和$variable表示法将表达式插入到模板中:
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()