快速业务通道

精通Grails: 用Groovy服务器页面(GSP)改变视图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
似乎有些过分,但是很多时候问题的源头正是这一行代码。编写测试并不难,而且保证安全要 比说抱歉更好。请输入 grails test-app 运行测试。如果一切正常,应该看到如清单 10 所示的信息:

清单 10.在 Grails 中通过测试

------------------------------------------------------- Running 2 Integration Tests... Running test DateTagLibTests...            testThisYear...SUCCESS Running test TripTests...            testSomething...SUCCESS Integration Tests Completed in 506ms -------------------------------------------------------

精通Grails: 用Groovy服务器页面(GSP)改变视图(5)

时间:2011-08-02 IBM Scott Davis

如果 TripTests 的样子让您感到惊讶,请不要担心。在输入 grails create-domain-class Trip 时 ,将会为您生成一个测试。实际上,每个 Grails create 命令都会生成对应的测试。确实,测试在现代 软件开发中如此 之重要。如果以前没有编写测试的习惯,那么 Grails 将优雅地将您带到正确的方向上 来,您肯定不会后悔。

grails test-app 命令除了运行测试之外,还会创建很好的 HTML 报告。请在浏览器中打开 test/reports/html/index.html,查看标准的 JUnit 测试报告,如图 1 所示。

图 1.单元测试报告

精通Grails: 用Groovy服务器页面(GSP)改变视图 - 编程入门网

编写并测试过简单的自定义标记之后,现在要构建一个略微复杂一些的标记。

高级自定义标记

更复杂的标记中可以处理属性和标记体。例如,现在的版权标记还需要许多复制/粘贴工作才能满足需 求。我想像下面这样将当前的行为放在真正可重用的标记内: <g:copyright startYear="2002">FakeCo Inc.</g:copyright>。 清单 11 显示了代码:

清单 11.处理属性和标记体的 Grails 标记

class DateTagLib {   def thisYear = {    out << Calendar.getInstance().get(Calendar.YEAR)   }   def copyright = { attrs, body ->    out << "<div id=''copyright''>"    out << "&copy; ${attrs[''startYear'']} - ${thisYear()}, ${body()}"    out << " All Rights Reserved."    out << "</div>"   } }

请注意:attrs 是标记属性的 HashMap。在这里用它提取 startYear 属性。我将以闭包形式调用 thisYear 标记(这与我用大括号时从 GSP 页面所做的闭包调用相同)。类似地,body 也以闭包的形式 传递给标记,所以调用它的方式与调用其他标记的方式相同。这样确保了我的自定义标记可以按照任意深 度嵌套到 GSP 中。

您可能注意到,自定义 TagLibs 使用与标准 Grails TagLibs 相同的名称空间 g:。如果需要将自己 的 TagLibs 放在自定义名称空间内,请向 DateTagLib.groovy 中添加 static namespace = ''trip''。在 GSP 内,TagLib 现在应该是 <trip:copyright startYear="2002">FakeCo Inc.</trip:copyright>。

片断模板

自定义标记是重用简短代码的好方法,从而避免成为只能复制/粘贴的 scriptlet。但是对于更大块的 GSP 标记来说,可以使用片断模板。

片断模板在 Grails 文档中的官方称谓是模板。惟一的问题是模板 这个词用得太多了,在 Grails 中 有许多不同的意义。下一节就会看到,将安装改变搭建视图的默认模板。对这些模板的修改也包括本节要 讨论的片断模板。为了减少混淆,我从 Rails 社区借用了一个术语,将要表达的内容称为片断模板,或 者就称为片断。

片断模板是一大块能够在多个 Web 页面之间共享的 GSP 代码。例如,假设我要在所有页面底部使用 一个标准的页脚。为了实现这一目的,我要创建一个名

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号