Jason Rudolph 关于Groovy的新教程:Grails + EJB Step by Step (增加关系)
本文转引自http://www.infoq.com/cn/articles/grails-ejb-tutorial
作者 Jason Rudolph 译者 胡键
这是grails很好的一个入门教程,对比JAVA应用可以省略大量的代码
下面是最关键的关系管理部分
步骤5 —— 增加关系管理
关于关系管理,我们对应用有哪些期望?嗯,要我说,我们应该能……
查看分配给某个员工的所有计算机。
查看单个计算机的细节(包括它的分配状况)。
能增加、修改和删除计算机(包括它的分配状况)。
准备好了吗?让我们开始吧。
在员工页列出计算机没有什么意义,因此让我们把这列移除。打开grails-app/views/employeeBean/list.gsp,并移除该列。现在,刷新浏览器,验证修改。
【附件1】
接下来,点击显示(Show),查看员工的细节。
【附件2】
最少,我们需要整理显示每个计算机的文本。但是,可能我们根本就不愿直接在这个页面上看到计算机。与其在该页显示计算机,不如包含一个指向该员工的计算机列表的链接。
打开该页模板(即,grails-app/views/employeeBean/show.gsp),移除显示当前员工计算机列表的行。接着增加以下行,链接到显示该员工的计算机列表的单独页面。
通过给标签增加optionValue参数,选择框中的文本会更具有含义。
现在,视图被修正了,但是更新(update)功能还需要除了视图之外的一点努力。我们同样需要增强控制器(即ComputerBeanController.groovy)。如果用户改变关联了计算机的员工,我们需要确保正确地持久化这些关联的变化。换句话说,我们需要从当前的员工去除关联,而将它分配给新的员工。这个增强型的更新方法需要一点额外的代码行。def delete = { def computerBean = ComputerBean.get( params.id ) if(computerBean) { computerBean.employeeBean.getComputers().remove(computerBean) computerBean.delete() flash.message = "ComputerBean ${params.id} deleted." redirect(action:list) } else { flash.message = "ComputerBean not found with id ${params.id}" redirect(action:list) }}
看起来Jane的新MacBook被回收了。我们应该删除它吗?
此时,我们完成它了!使用快捷的几步,我们现在已经有了一个功能完备的Web应用,它构建于我们的实体Bean上。当然,它还需一些打磨。但至少,作为一个可工作的原型,它已经足够了。尽管仍需改良,但它是个完全能发展成完美产品的一个原型。