返回介绍

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 版本的阅读列表应用程序。剩下的就是创建一个视图,显示图书列表和表单。

发布评论

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