返回介绍

6.3.3 开发 Grails 控制器

发布于 2025-04-21 21:10:09 字数 1729 浏览 0 评论 0 收藏

有了领域模型,通过 grails 工具创建出控制器就很容易了。关于控制器,有几个命令可供选择。

  • create-controller :创建空控制器,让开发者来编写控制器的功能。

  • generate-controller :生成一个控制器,其中包含特定领域模型类的基本 CRUD 操作。

  • generate-all :生成针对特定领域模型类的基本 CRUD 控制器,及其视图。

脚手架控制器很好用,也是 Grails 中比较知名的特性,但我们仍然会保持简洁,写一个仅包含必要功能的控制器,能匹配第 2 章里的应用程序功能就好。因此,我们用 create-controller 命令来创建原始的控制器,然后填入所需的方法。

$ grails create-controller ReadingList

这个命令会在 grails-app/controllers/readingList 里创建一个名为 ReadingListController 的控制器:

package readinglist
class ReadingListController {

  def index() { }
}

一行代码都不用改,这个控制器就能运行了,虽然它干不成什么事。此时,它能处理发往/readingList 的请求,将请求转给 grails-app/views/readingList/index.gsp 里定义的视图(现在还没有,我们稍后会创建的)。

我们需要控制器来显示图书列表,还有添加新书的表单。我们还需要提交表单,将新书保存到数据库里的功能。下面的代码就是我们所需要的 ReadingListController

代码清单 6-6 改写 ReadingListController

package readinglist

import static org.springframework.http.HttpStatus.*
import grails.transaction.Transactional

class ReadingListController {

  def index() {
    respond Book.list(params), model:[book: new Book()]    ←---获取图书填充到模型里
  }

  @Transactional
  def save(Book book) {
    book.reader = 'Craig'
    book.save flush:true     ←---保存图书
    redirect(action: "index")
  }

}

虽然相比等效的 Java 控制器,代码长度大幅缩短,但这个版本的 ReadingListController 功能已经基本完整。它可以处理发往/readingList 的 GET 请求,获取并展示图书列表。在表单提交后,它还会处理 POST 请求,保存图书,随后重定向回 index 动作(由 index() 方法来处理)。

太不可思议了,我们已经基本完成了 Grails 版本的阅读列表应用程序。剩下的就是创建一个视图,显示图书列表和表单。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。