快速业务通道

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

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

清单 3.list.gsp 视图

<g:each in="${tripList}" status="i" var="trip">   <tr class="${(i % 2) == 0 ? ''even'' : ''odd''}">    <td><link action="show" id="${trip.id}">${trip.id?.encodeAsHTML()} </g:link></td>    <td>${trip.airline?.encodeAsHTML()}</td>    <td>${trip.name?.encodeAsHTML()}</td>    <td>${trip.city?.encodeAsHTML()}</td>    <td>${trip.startDate?.encodeAsHTML()}</td>    <td>${trip.endDate?.encodeAsHTML()}</td>   </tr> </g:each>

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

时间:2011-08-02 IBM Scott Davis

<g:each> 标记的 status 属性是个简单的计数器字段(请注意这个值用在下一行的 ternary 语句中,用来将 CSS 样式设为 even 或 odd)。var 属性允许命名用来保存当前项的变量。如果将名称 改为 foo,那么需要将后面的行改为 ${foo.airline?.encodeAsHTML()},依次类推( ?. 操作符是 Groovy 用来避免 NullPointerException 的方法。它可以快捷地表示 “只有在 airline 不为 null 时 才调用 encodeAsHTML() 方法,否则返回空字符串”)。

另一个常用 Grails 标记是 <g:link>。顾名思义,它的作用是构建一个 HTML <a href> 链接。当然也可以直接使用 <a href> 标记,但是这个方便的标记还接受属性,例如 action、id 和 controller。如果只考虑 href 的值而不考虑它前后的 anchor 标记,那么可以改用 <g:createLink> 。在 list.gsp 顶部能看到返回链接的第三个标记: <g:createLinkTo>。 这个标记接受 dir 和 file 属性而不是 controller、action 和 id 属性。清单 4 显示了 link 和 createLinkTo 的作用:

清单 4. link 标记 vs. createLinkTo 标记

<div class="nav">   <span class="menuButton"><a class="home" href="${createLinkTo (dir:'''')}">Home</a></span>   <span class="menuButton"><link class="create" action="create">New Trip</g:link></span> </div>

注意,在清单 4 中,可以交替使用两种不同的形式调用 Grails 标记 — 一种是在尖括号内包含标记 ,一种是仿效方法调用在大括号内包含标记。当在另一个标记的属性中调用方法时,大括号表示法(正式 名称为表达式语言或 EL 语法)更合适。

在 list.gsp 下面的几行,能够看到另一个流行的 Grails 标记:<g:if>,如清单 5 所示。在 这个示例中,它的意思是 “如果 flash.message 属性不为 null,就显示它。”

清单 5. <g:if> 标记

<h1>Trip List</h1> <if test="${flash.message}">   <div class="message">${flash.message}</div> </g:if>

在浏览生成的视图时,还会看到其他许多 Grails 标记。<g:paginate> 标记在数据库包含的 Trip 比当前显示的 10 条记录多时,显示 “前一个” 和 “下一个” 链接。<g:sortable> 标记 使列标题变为可单击,从而支持排序。看看其他 GSP 页面中与 HTML 表单有关的标记,例如 <g:form> 和 <g:submit>。

自定义标记库

虽然标准 Grails 标记很有帮助,但是最终会遇到需要自定义标记的情况。许多资深 Java 开发人员 (包括我自己

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