快速业务通道

精通Grails: 文件上传和Atom联合 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
m 的 Wikipedia 页面最后的例子。您甚至可以阅读 RFC 4287, 这是用于 Atom 格式的 IETF 规范。或者,您可以继续阅读本文,看看一个特定于 Grails 的解决方案。

首先,在 EntryController.groovy 中添加一个 atom 闭包,如清单 16 所示:

清单 16. 在 EntryController.groovy 中添加一个 atom 闭包

def atom = {   if(!params.max) params.max = 10   def list = Entry.list( params )   def lastUpdated = list[0].lastUpdated   [ entryInstanceList:list, lastUpdated:lastUpdated ] }

精通Grails: 文件上传和Atom联合(10)

时间:2011-08-02 IBM Scott Davis

这个闭包与标准的 list 闭包之间惟一的不同是增加了 lastUpdated 字段。由于该列表已经按 lastUpdated 排序(这要归因于 Entry domain 类的 static mapping 块中的 sort "lastUpdated":"desc" 设置),只需从该列表的第一个 Entry 中获取该字段,就可以得到最近的日期。

接下来,创建 grails-app/views/entry/atom.gsp。添加清单 17 中的代码:

清单 17. atom.gsp

<% response.setContentType("application/atom+xml") %><feed xmlns="http://www.w3.org/2005/Atom">   <title type="text">News from Blogito.org</title>   <link rel="alternate" type="text/html" href="http://blogito.org/"/>   <link rel="self" type="application/atom+xml"  href="http://blogito.org/entry/atom" />   <updated><g:atomDate>${lastUpdated}</g:atomDate></updated>   <author><name>Blogito.org</name></author>   <id>tag:blogito.org,2009-01-01:entry/atom</id>   <generator uri="http://blogito.org" version="0.1">Hand-rolled Grails  code</generator>   <g:each in="${entryInstanceList}" status="i" var="entryInstance"> <g:render template="atomEntry" bean="${entryInstance}" var="entryInstance" />   </g:each> </feed>

可以看到,以上代码做的第一件事是将 MIME 类型设置为 application/atom+xml。然后,提供关于该 feed 的一些基本的元数据:updated、author 和 generator 等。

如果想避免在整个 feed 中硬编码 blogito.org,那么可以让 atom 闭包获取 request.serverName, 将它赋给一个变量,并在响应 hashmap 中返回它,同时返回的还有 entryInstanceList 和 lastUpdated 。为了完全动态化,可以使用 request.scheme 返回 http,并使用 request.serverPort 返回 80。(唯 一要避免使用 request.serverName 变量的地方是在 id 中,稍后我将讨论到这一点)。

对于 Atom feed 来说,以多种不同的格式提供链接并不少见。从 type 属性可以看出,该 feed 提供 两个链接:一个是 HTML 链接,另一个是 Atom 格式的指向它本身的链接。self 链接特别有用;如果有 一个不是自己下载的 Atom 文档,那么通过该链接就可以回溯到规范来源。

id 字段是 Atom feed 的惟一标识符,它不同于 URI 或可下载该 Atom feed 的当前位置。(您刚才 已经知道,<link> 元素提供 feed 的当前来源)。在这个例子中,我使用 Mark Pilgrim 提供的 技术生成一个惟一的、永久的 ID 字符串:将域名、feed 初次进入服务的日期和 URI 剩下的部分组合到 一起。

id

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