课程表

Groovy课程

工具箱
速查手册

Groovy 模板引擎

当前位置:免费教程 » Java相关 » Groovy

Groovy的模板引擎的操作方式类似于邮件合并(从数据库自动添加名称和地址到字母和信封,以便于将邮件,特别是广告发送到许多地址),但是它更加通用。

字符串中的简单模板

如果你采用下面的简单例子,我们首先定义一个名称变量来保存字符串“Groovy”。在println语句中,我们使用$符号来定义可以插入值的参数或模板。

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

如果上面的代码在groovy中执行,将显示以下输出。输出清楚地显示$名称被由def语句分配的值替换。

简单模板引擎

以下是SimpleTemplateEngine的示例,它允许您在模板中使用类似于JSP的scriptlet和EL表达式,以生成参数化文本。模板引擎允许绑定参数列表及其值,以便可以在具有定义的占位符的字符串中替换它们。

  1. def text ='This Tutorial focuses on $TutorialName. In this tutorial you will learn
  2.  
  3. about $Topic'
  4.  
  5. def binding = ["TutorialName":"Groovy", "Topic":"Templates"]
  6. def engine = new groovy.text.SimpleTemplateEngine()
  7. def template = engine.createTemplate(text).make(binding)
  8.  
  9. println template

如果上面的代码在groovy中执行,将显示以下输出。

现在让我们使用XML文件的模板功能。作为第一步,让我们将下面的代码添加到一个名为Student.template的文件中。在以下文件中,您将注意到,我们尚未添加元素的实际值,而是添加占位符。所以$ name,$ is和$ subject都被放置为占位符,需要在运行时替换。

  1. <Student>
  2. <name>${name}</name>
  3. <ID>${id}</ID>
  4. <subject>${subject}</subject>
  5. </Student>

现在,让我们添加我们的Groovy脚本代码来添加功能,可以使用实际值替换上面的模板。应该注意以下事项关于以下代码。

  • 占位符到实际值的映射通过绑定和SimpleTemplateEngine完成。绑定是一个映射,占位符作为键,替换值作为值。

  1. import groovy.text.*
  2. import java.io.*
  3.  
  4. def file = new File("D:/Student.template")
  5. def binding = ['name' : 'Joe', 'id' : 1, 'subject' : 'Physics']
  6. def engine = new SimpleTemplateEngine()
  7. def template = engine.createTemplate(file)
  8. def writable = template.make(binding)
  9.  
  10. println writable

如果上面的代码在groovy中执行,将显示以下输出。从输出中可以看出,在相关占位符中成功替换了值。

  1. <Student>
  2. <name>Joe</name>
  3. <ID>1</ID>
  4. <subject>Physics</subject>
  5. </Student>

StreamingTemplateEngine

StreamingTemplateEngine引擎是Groovy中可用的另一个模板引擎。这类似于SimpleTemplateEngine,但是使用可写的闭包创建模板,使其对于大模板更具可扩展性。特别是这个模板引擎可以处理大于64k的字符串。

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

  1. def text = '''This Tutorial is <% out.print TutorialName %> The Topic name
  2.  
  3. is ${TopicName}'''
  4. def template = new groovy.text.StreamingTemplateEngine().createTemplate(text)
  5. def binding = [TutorialName : "Groovy", TopicName : "Templates",]
  6. String response = template.make(binding)
  7. println(response)

如果上面的代码在groovy中执行,将显示以下输出。

  1. This Tutorial is Groovy The Topic name is Templates

XMLTemplateEngine

XmlTemplateEngine用于模板方案,其中模板源和预期输出都是XML。模板使用正常的$ {expression}和$ variable表示法将任意表达式插入到模板中。

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

  1. def binding = [StudentName: 'Joe', id: 1, subject: 'Physics']
  2. def engine = new groovy.text.XmlTemplateEngine()
  3.  
  4. def text = '''
  5. <document xmlns:gsp='http://groovy.codehaus.org/2005/gsp'>
  6. <Student>
  7. <name>${StudentName}</name>
  8. <ID>${id}</ID>
  9. <subject>${subject}</subject>
  10. </Student>
  11. </document>
  12. '''
  13.  
  14. def template = engine.createTemplate(text).make(binding)
  15. println template.toString()

如果上面的代码在groovy中执行,将显示以下输出

  1. <document>
  2. <Student>
  3. <name>
  4. Joe
  5. </name>
  6. <ID>
  7. 1
  8. </ID>
  9. <subject>
  10. Physics
  11. </subject>
  12. </Student>
  13. </document>
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号