`

Grails 脚手架

阅读更多

 

脚手架

根据指定的领域类,脚手架为你自动生成一个领域相关的完整应用,包括:

  • 必要的 views
  • 控制器的创建/读取/更新/删除(CRUD)操作

 

启动脚手架

让脚手架生效的最简单方法是通过设置 scaffold 属性。 以领域类 Book 为例,你需要在其控制器中设置 scaffold 属性为true就可以了,代码如下:

 

class BookController {
   def scaffold = true
}

上述代码可以正常工作是因为控制器 BookController 命名跟领域类 Book 相一致, 如果我们想脚手架对特定的领域类使用,你可以直接将特定的领域类赋值给scaffold属性,代码如下:

 

def scaffold = Author

设置完毕后,如果你运行grails应用,那么那些必要的动作和视图都将在运行期间自动生成。 根据脚手架的动态机制,以下一些动作将被动态实现:

  • list
  • show
  • edit
  • delete
  • create
  • save
  • update

即基本的CRUD接口将被自动生成。 为了访问以上示例生成的接口,只需要去 http://localhost:8080/app/book

如果你倾向于使用 基于Hibernate映射 的Java领域模型,你依然可以使用脚手架, 只需简单的导入必要的类,并且将此类赋值给scaffold属性即可。

 

动态脚手架

注意当使用scaffold属性的时候,Grails并不是通过代码模板或者代码生成来实现脚手架功能,因此你照样可以在被脚手架过的控制器中增加自己的动作,来跟脚手架过的动作进行交互。比如,在下面的示例中, changeAuthor 可以重新定向到一个并不存在的 show 的动作:

 

class BookController {
   def scaffold = Book

def changeAuthor = { def b = Book.get( params["id"] ) b.author = Author.get( params["author.id"] ) b.save()

// redirect to a scaffolded action redirect(action:show) } }

当然必要的时候,你也可以使用自己的动作来重写被脚手架过的动作,代码如下:

 

class BookController {
   def scaffold = Book

// overrides scaffolded action to return both authors and books def list = { [ "books" : Book.list(), "authors": Author.list() ] } }

所有这些就是所谓的“动态脚手架”,在这里CRUD接口将在运行期间动态生成。不过Grails同样也支持所谓的“静态”脚手架,这将在接下来的章节中讨论。

 

自定义生成的视图

Grails生成的视图中,有些表单能智能地适应 验证约束. 如下面代码所示,只需要简单地重新排列生成器(builder)中约束的顺序,就可以改变其在视图中出现的顺序:

 

def constraints = {
      title()
      releaseDate()
}

你也可以通过使用 inList 约束来生成一个列表(list)而不是简单的文本输入框(text input):

 

def constraints = {
      title()
      category(inList:["Fiction", "Non-fiction", "Biography"])
      releaseDate()
}

或者通过基于数字的 range 约束来生成列表 :

 

def constraints = {
        age(range:18..65)
}

通过约束来限制大小(size)也可以影响生成的视图中可以输入的字符数:

 

def constraints = {
        name(size:0..30)
}

 

生成控制器和视图

以上的脚手架特性虽然很有用,但是在现实世界中有可能需要自定义逻辑和视图。Grails允许你通过使用命令行的方式,来生成一个控制器和相关视图(跟脚手架所做的事情差不多)。为了生成控制器,只需要输入:

 

grails generate-controller Book

或者为了生成视图,只需输入:

 

grails generate-views Book

或者生成控制器和视图,只需输入:

 

grails generate-all Book

如果你的领域类有包名或者从 Hibernate映射的类 来生成,那需要记住一定要用类的全名(包名+类名),如下:

 

grails generate-all com.bookstore.Book

 

定制脚手架模板

使用的Grails自动生成的控制器和试图模板可以自己定制安装模板通过 install-templates 这个命令.  

分享到:
评论
1 楼 零度弥合 2015-05-20  
博主,我一步一步跟着走,确实生成了views,但是在主页点链接却出现404,请问这是为什么呢?

相关推荐

    grails脚手架2次优化

    《Grails脚手架二次优化详解》 在Web开发领域,Grails框架以其高效和便捷的特性深受开发者喜爱。其中,脚手架(Scaffolding)是Grails提供的一种快速开发工具,它能够自动生成基本的CRUD操作,极大地提高了开发效率...

    Grails从入门指南(第二版)

    ”应用,体验Grails的快速开发流程,理解Grails脚手架和自动代码生成。 4. **Grails MVC**:深入理解Model-View-Controller架构,包括Domain Classes(模型)、Controllers(控制器)和Views(视图)的使用。 5. *...

    grails templates脚手架优化

    在Grails框架中,模板(Template)是一种强大的工具,它用于快速生成代码,尤其是在构建脚手架(Scaffolding)时。脚手架是自动创建的CRUD(创建、读取、更新、删除)界面,它极大地提高了开发效率,使得开发者无需...

    grails快速开发web

    - **脚手架支持**:提供了一套快速原型开发工具,可以自动生成基本的应用程序结构。 - **插件系统**:拥有丰富的插件生态系统,可以通过安装插件扩展 Grails 的功能。 #### 三、Grails 的配置文件位置 在 Grails ...

    Grails入门教程(二)

    在 Grails 中,我们可以使用脚手架来生成 Controller 和 View 代码。脚手架可以根据域类生成相应的 Controller 和 View 代码,以便我们快速开发应用程序。 例如,我们可以使用以下命令来生成 Team 和 Member 域的 ...

    Grails入门指南 -- 针对grails1.0.4更新

    - **脚手架**:自动生成控制器和视图代码,快速搭建应用基础结构。 - **URL映射**:自定义URL路由规则,实现更加友好的URL结构。 - **数据验证**:实现数据输入的有效性检查,增强应用的健壮性和安全性。 - **...

    Grails基础教程.pdf

    - **Hubbub的领域类脚手架**:使用Grails自带的脚手架功能快速生成基于领域模型的CRUD操作界面。 - **脚手架与验证**:如何将验证规则与脚手架生成的界面相结合。 - **错误信息的自定义**:自定义错误提示信息,提高...

    Grails入门精通及中文API

    - **自动化脚手架**: Grails提供了一套自动生成常见CRUD(创建、读取、更新、删除)操作的工具,极大地减少了基础代码的编写工作。 - **Grails命令行工具**: 提供了一系列命令来快速创建项目、生成控制器、领域类等...

    Grails入门指南-中文版

    - Grails提供了一种快速生成基本CRUD操作的方法,称为“脚手架”。 - 可以快速搭建起一个基础的应用界面。 **5. URL映射** - 自定义URL模式,使URL更具可读性。 - 例如,将`/user/list`映射到`UserController....

    一步一步学grails(7)

    通常,使用 Grails 的“脚手架”功能自动生成的代码就已经包含了基本的 MVC 架构。 #### 二、示例场景分析 本教程通过一个具体场景来演示 Grails 的应用: 1. **需求描述**:在产品编号列表页面中,用户点击...

    grails-2.4.4

    Grails的自动化脚手架功能能够自动生成大部分基础代码,如CRUD操作和HTML模板,进一步节省开发时间。 **5. 学习与资源** 为了更好地理解和使用Grails 2.4.4,开发者可以参考官方文档、在线教程、社区论坛和示例...

    Grails权威指南

    第1章 寻找grails之旅  1.1 java的困惑  1.2 webc2.0时代  1.3 java的力量  1.4 什么是grails  1.4.1 与java集成  1.4.2 简单而强大  1.4.3 吸取的经验教训  1.5 使用grails的原因 ...

    Grails基础教程

    ### Grails基础教程知识点概述 #### 一、Grails简介 **1.1 Java的困惑** 随着互联网技术的发展,传统的Java开发方式面临着诸多挑战。Java虽然功能强大且成熟稳定,但在面对快速变化的需求以及Web 2.0时代的新特性...

    Getting-Started-with-Grails-Chinese.rar_Getting Started_grails

    8. **自动化脚手架**:Grails提供了一键生成CRUD操作的脚手架功能,极大地提高了开发效率。 9. **测试**:Grails内置了全面的测试支持,包括单元测试、集成测试和功能测试,遵循TDD(测试驱动开发)原则。 10. **...

    GRAILS课程学习记录总结

    - Grails 的“脚手架”功能能快速生成 CRUD(创建、读取、更新、删除)操作的基本界面,帮助开发者快速启动项目。 - 学习如何配置应用的运行端口,指定领域类的默认值,以及理解 Grails 应用的各个组件,如领域类...

    Grails in Action - Presentation

    - **通过脚手架快速入门**:演示如何利用Grails内置的脚手架功能快速搭建项目。 - **Grails的多层架构**:深入剖析Grails的内部结构及其各个组件的工作原理。 - **插件生态系统**:展示Grails丰富的插件资源及其对...

    Grails Wed开发课程设计

    5. **生成脚手架(Scaffolding)**:Grails的脚手架功能可以自动生成基本的CRUD(Create、Read、Update、Delete)操作界面,大大减少了视图和控制器的编写工作。 6. **数据库配置与迁移**:学生需要学习如何配置...

    Grails入门指南第2版

    Grails的脚手架功能可以自动生成基于模型的CRUD(创建、读取、更新、删除)操作的控制器和视图,使开发者能够快速构建基本的用户界面,节省时间。 **Testing** Grails重视测试,提供了内置的测试框架,包括单元测试...

Global site tag (gtag.js) - Google Analytics