- Groovy 教程
- Groovy - 首页
- Groovy - 概述
- Groovy - 环境配置
- Groovy - 基本语法
- Groovy - 数据类型
- Groovy - 变量
- Groovy - 运算符
- Groovy - 循环
- Groovy - 条件判断
- Groovy - 方法
- Groovy - 文件 I/O
- Groovy - 可选值
- Groovy - 数字
- Groovy - 字符串
- Groovy - 范围
- Groovy - 列表
- Groovy - 映射
- Groovy - 日期和时间
- Groovy - 正则表达式
- Groovy - 异常处理
- Groovy - 面向对象
- Groovy - 泛型
- Groovy - 特性
- Groovy - 闭包
- Groovy - 注解
- Groovy - XML
- Groovy - JMX
- Groovy - JSON
- Groovy - DSL
- Groovy - 数据库
- Groovy - 构造器
- Groovy - 命令行
- Groovy - 单元测试
- Groovy 模板引擎
- Groovy - 元对象编程
- Groovy 有用资源
- Groovy - 快速指南
- Groovy - 有用资源
- Groovy - 讨论
Groovy 模板引擎
Groovy 的模板引擎的工作方式类似于邮件合并(为了方便发送邮件,特别是广告邮件到多个地址,自动将数据库中的姓名和地址添加到信件和信封中),但它更加通用。
字符串中的简单模板
在下面的简单示例中,我们首先定义一个名为 name 的变量来保存字符串“Groovy”。在 println 语句中,我们使用 $ 符号来定义一个参数或模板,可以在其中插入值。
def name = "Groovy" println "This Tutorial is about ${name}"
如果以上代码在 Groovy 中执行,则会显示以下输出。输出清楚地显示 $name 被 def 语句赋值的值替换了。
简单模板引擎
以下是一个 SimpleTemplateEngine 的示例,它允许您在模板中使用类似 JSP 的脚本和小脚本表达式来生成参数化文本。模板引擎允许您绑定参数列表及其值,以便可以替换包含已定义占位符的字符串。
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 中执行,则会显示以下输出。
现在让我们将模板功能用于 XML 文件。第一步,让我们将以下代码添加到名为 Student.template 的文件中。在下面的文件中,您会注意到我们没有添加元素的实际值,而是占位符。因此,$name、$is 和 $subject 都作为占位符,需要在运行时替换。
<Student> <name>${name}</name> <ID>${id}</ID> <subject>${subject}</subject> </Student>
现在让我们添加 Groovy 脚本代码来添加可以用来替换上述模板的实际值的功能。关于以下代码,需要注意以下几点。
占位符到实际值的映射是通过绑定和 SimpleTemplateEngine 完成的。绑定是一个 Map,其中占位符作为键,替换值作为值。
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 中执行,则会显示以下输出。从输出可以看出,值已成功替换到相关的占位符中。
<Student> <name>Joe</name> <ID>1</ID> <subject>Physics</subject> </Student>
StreamingTemplateEngine
StreamingTemplateEngine 引擎是 Groovy 中可用的另一个模板引擎。这与 SimpleTemplateEngine 类似,但使用可写闭包创建模板,使其更适合大型模板。具体来说,此模板引擎可以处理大于 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 中执行,则会显示以下输出。
This Tutorial is Groovy The Topic name is Templates
XMLTemplateEngine
XmlTemplateEngine 用于模板场景,其中模板源和预期输出都应为 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 中执行,则会显示以下输出
Joe 1 Physics