快速业务通道

精通Grails: 构建您的第一个Grails应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ring)。

最后,save 动作(见清单 5)并没有相应的 save.gsp 页面。如果记录被成功地保存到数据库中,那 么该动作会重定向到 show 动作页面。否则,它呈现 create.gsp 页面,以便显示错误,并让您重试。

清单 5. save 动作

def save = {   def trip = new Trip(params)   if(!trip.hasErrors() && trip.save()) {    flash.message = "Trip ${trip.id} created"    redirect(action:show,id:trip.id)   }   else {    render(view:''create'',model:[trip:trip])   } }

在此,我们不详细讨论 Grails 是如何工作的,而是看看它的实际效果。

精通Grails: 构建您的第一个Grails应用程序(4)

时间:2011-08-02 IBM Scott Davis

应用程序的实际效果

在命令行输入 grails run-app。控制台在快速显示一批 Log4j 消息之后,将显示如下所示的消息:

Server running. Browse to http://localhost:8080/trip-planner

如果端口 8080 上已经有一个服务器在运行,那么将显示一条核心转储信息:

Server failed to start: java.net.BindException: Address already in use

可以通过两种方法轻松更改 Jetty 所使用的端口。可以通过输入 grails -Dserver.port=9090 run- app 临时进行更改。如果要使更改持久,可以从 $GRAILS_HOME/scripts/Init.groovy 中找出以 serverPort 开头的那一行,并更改值:

serverPort = System.getProperty(''server.port'') ?        System.getProperty(''server.port'').toInteger() : 9090

使 Grails 在您选择的端口上运行之后,在 Web 浏览器中输入 URL。应该可以看到一个欢迎屏幕,其 中列出所有的控制器,如图 1 所示:

图 1. Grails 应用程序的欢迎屏幕

精通Grails: 构建您的第一个Grails应用程序 - 编程入门网

单击 TripController 链接。您有一个完整的 CRUD(创建、读取、更新、删除)应用程序可以使用。

使用图 2 所示的页面创建新的 trip:

图 2. Create Trip 页面

精通Grails: 构建您的第一个Grails应用程序 - 编程入门网

精通Grails: 构建您的第一个Grails应用程序(5)

时间:2011-08-02 IBM Scott Davis

使用图 3 所示的页面编辑 trip:

图 3. Trip List 页面

精通Grails: 构建您的第一个Grails应用程序 - 编程入门网

准备和运行这个应用程序要花多长时间?需要多少代码?下面就是答案:

按下 Ctrl-C,关闭 Grails。

输入 grails stats。

屏幕上将显示输出:

+----------------------+-------+-------+   | Name         | Files | LOC |   +----------------------+-------+-------+   | Controllers     |   1 |  66 |   | Domain Classes    |   1 |   8 |   | Integration Tests  |   1 |   4 |   +----------------------+-------+-------+   | Totals        |   3 |  78 |   +----------------------+-------+-------+

只需不到 100 行代码,就可以实现应用程序的所有功能。看起来还不错。不过,最后我还要再展示一 个窍门。

生成控制器和视图是一项很好的学习体验,而磁盘上的物理文件则有助于说明各个部分是如何连接在 一起的。不过在此需要做一件事:删除 TripController 类中的内容,并用下面的内容替代:

class TripController{    def scaffold = Trip   }

这行代码告诉 Grails 像对待前一个控制器一样,在运行时在内存中动态地生成所有那些 list、save 和 edit 动作。仅仅 3 行代码就可以产生和 66 行代码一样的行为。

再次输入 grails run-app。是的 — 所有数据都没有了。不必担心。按下 Ctrl-C 关闭 Grails。这 一次,输入 grails prod run-app。现在处于生产模式下,这意味着在服务器重新启动之前,数据已被保 存。通过一连串的单击进入 TripController,保存一些记录。应用程序的行为应该没有什么不同。您已 经知道,在浏览

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号