快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
l 配置文件内,并像平常一样编写应用程序。Grails 应用程序部署在标准的 servlet 容器内 ,所以 Grails 对 JSP 的支持同对 GSP 的支持一样好。Grails 有针对 Echo2 和 Wicket 的插件(两者 都是面向组件的 Web 框架),所以在使用 JSF 或 Tapestry 插件方面没有任何障碍。

类似地,向 Grails 添加 Ajax 框架(例如 Dojo 和 YUI)的步骤也没有什么特别之处:只要将它们 的 JavaScript 库复制到 web-app/js 目录即可。Prototype 和 Scriptaculous 是 Grails 的默认安装 。RichUI 插件则从各种 Ajax 库选择 UI 部件。

如果查看插件列表,那么就会看到对 RIA 客户机的支持 —— 例如 Flex、OpenLazlo、GWT 和 ZK。 显然,Grails 应用程序并不缺少备选的视图解决方案。但是在这里我们还是采用 Grail 直接支持的视图 技术 — GSP。

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

时间:2011-08-02 IBM Scott Davis

GSP 101

可以使用多种方法查找 GSP 页面。文件扩展名 .gsp 就是一种很明显的方法,就好像很多以 <g: 开头的标记一样。事实上,GSP 不过是标准 HTML 加上一些提供动态内容的 Grails 标记而已。在前一节 提到的某些备选的视图技术是一层不透明的抽象层,完全将 HTML、CSS 和 JavaScript 的细节隐藏在 Java、ActionScript 或其他编程语言层之后。GSP 是在标准 HTML 上的薄薄的一层 Groovy 层,因此在 必要时,可以轻松地将它从框架中取出来,并使用原生的 Web 技术。

但是要在目前的 Trip Planner 应用程序中查找 GSP 的话,则会比较费力(这个系列的前两篇文章开 始构建 Trip Planner 程序。如果没有跟上进度,那么现在是赶上来的好时机)。现在视图正在使用动态 搭建(scaffold),所以 trip-planner/grails-app/views 目录还是空的。请在文本编辑器打开如清单 1 所示的 grails-app/controller/TripController.groovy,查看用来启用动态搭建的命令:

清单 1. TripController 类

class TripController{   def scaffold = Trip }

def scaffold = Trip 行告诉 Grails 在运行的时候动态地生成 GSP。这非常适合自动保持视图与域 模型修改同步,但是如果正在学习该框架,那么它没有提供太多可学习的东西。

请在 trip-planner 根目录下输入 grails generate-all Trip。当询问是否覆盖现有控制器时,回答 y(也可以回答 a 表示全部,这将覆盖所有内容,这样就不会反复出现提示)。现在应该看到完整的 TripController 类,带有名为 create、edit、list 和 show 闭包(以及其他闭包)。还应该看到 grails-app/views/trip 目录下有四个 GSP:create.gsp, edit.gsp, list.gsp, and show.gsp.

在这里起作用的是 “约定优于配置”。当访问 http://localhost:9090/trip-planner/trip/list 时 ,就是要求 TripController 填充域模型对象 Trip 的列表,并将列表传递给 trip/list.gsp 视图。请 在文本编辑器中查看 TripController.groovy,如清单 2 所示:

清单 2. 完全填充的 TripController 类

class TripController{   ...   def list = {    if(!params.max) params.max = 10    [ tripList: Trip.list( params ) ]   }   ... }

这个简单的闭包从数据库中检索到 10 条 Trip 记录,将它们转换为 POGO,并将它们保存在名为 tripList 的 ArrayList 内。list.gsp 页面随后将遍历列表,逐行构建 HTML 表格。

下一节研究许多流行的 Grails 标记,包括用来在 Web 页面上显示每条 Trip 的 <g:each> 标 记。

Grails 标记

<g:each> 是常用的 Grails 标记。它将遍历列表中的每个 项。要查看它的效果,请在文本编 辑器中打开 grails-app/views/trip/list.gsp(如清单 3 所示)

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