快速业务通道

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

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

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

时间:2011-08-02 IBM Scott Davis

在过去几期的 精通 Grails 文章中,您一直在逐步构建一个小型的博客服务(Blogito)。在这篇文 章中,Blogito 将最终完工,成为一个实用的博客应用程序。您将为博客条目主体实现文件上传功能,并 添加自己制作的用于聚合的 Atom feed。

但是,在开始之前,请注意在上一篇文章(“身份验证和授权”)中,我加入的认证使 UI 中出现一 个细小的 bug。在加入新的特性之前,应该修复这个 bug。

修复隐藏的 bug

启动 Grails 时,grails-app/conf/Bootstrap.groovy 增加 2 个用户和 4 个新的博客条目。但是, 如果尝试通过 Web 界面增加博客条目,会发生什么?可以使用下面的步骤试试看:

以用户名 jsmith 和密码 wordpass 登录。

单击 New Entry。

添加标题和摘要。

单击 Create。

您将看到以下错误:Property [author] of class [class Entry] cannot be null。那么,这个 bug 是如何引入到应用程序中的?毕竟,bootstrap 代码还能正常工作。

在第一篇 Blogito 文章(“改变 Grails 应用程序的外观”)中,我让您通过输入 grails generate-views Entry 生成 Groovy Server Pages(GSP)视图。在随后的文章中,我更改了 domain 类 ,但是从未让您再回过头来生成视图。当我添加 Entry 与 User 之间的 1:M 关系时,磁盘上的 create.gsp 视图一直不变,如清单 1 所示。(还记得吗,belongsTo 创建一个名为 author 的字段,该 字段的类型为 User)。

清单 1. 打破 GSP 的 1:M 关系

class Entry {   static belongsTo = [author:User]   String title   String summary   Date dateCreated   Date lastUpdated }

不得不说,要使一切同步,最安全的方式还是通过动态脚手架生成视图 — 特别是在开发的早期,域 模型不断变化的时候,更是如此。当然,不能仅仅依靠通过脚手架生成的视图,但是,当您在磁盘上生成 GSP 时,使它们保持最新的责任就从 Grails 转移到您自己身上。

如果现在为 Entry 类生成视图的话,Grails 会提供一个组合框,其中显示一个 Author 列表,如清 单 2 所示。您自己不要 这样做 — 这只是为了演示。稍后我将提供两种不同的选项。

清单 2. 为 1:M 关系生成的组合框

<g:form action="save" method="post" >   <div class="dialog">    <table>     <tbody>      <!-- SNIP -->      <tr class="prop">       <td valign="top" class="name">        <label for="author">Author:</label>       </td>       <td valign="top"         class="value ${hasErrors(bean:entryInstance,                      field:''author'',''errors'')}">        <g:select optionKey="id"             from="${User.list()}"             name="author.id"             value="${entryInstance?.author?.id}" ></g:select>       </td>      </tr>      <!-- SNIP -->     </tbody>    </table>   </div> </g:form>

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

时间:2011-08-02 IBM Scott Davis

注意 <g:select> 元素。字段名为 author.id。在 “GORM - 有趣的名称,严

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