Grails 圣杯脚手架

Grails 圣杯脚手架,grails,gorm,scaffolding,Grails,Gorm,Scaffolding,我最近正在研究grails,想知道如何做更复杂的脚手架 例如,如果我想构建一个类 class Book{ Author a Publisher p // .... } 作者类 class Author{ String firstName String lastName // ... } 出版商类 class Publisher{ String name String address // .... } 现在如果我有一个图书控制器 cl

我最近正在研究grails,想知道如何做更复杂的脚手架

例如,如果我想构建一个类

class Book{
  Author a
  Publisher p

  // ....
}
作者类

class Author{
   String firstName
   String lastName
   // ...
}
出版商类

class Publisher{
    String name
    String address
    // ....
}
现在如果我有一个图书控制器

class BookController{
   static scaffold = true;
}
我有一个

作者发布者

但是如果我想要一个带有

AuthorIDAuthorFirstNameAuthorLastNamePublisherNamePublisherAddress


我已经查看了,但是,我无法将其设置为给定属性。我想知道我能完成它吗?一个教程会很有帮助。

Grails中的脚手架插件并不是为处理这些类型的开箱即用的复杂视图而设计的。您有几个选择:

  • 使用
    安装模板
    命令并修改脚手架模板以满足您的需要

  • 重新设计域类以使用嵌入式
    作者
    发布者
    。这将改变脚手架的输出,但也将改变更多。我不会使用此选项,除非您了解这将对您的域模型所做的所有更改

  • 使用脚手架生成代码,然后定制输出以满足您的需要


  • 在这里介绍的三个选项中,我推荐第三个,因为它最适合解决您的问题的狭窄范围。

    您也可以使用瞬态。但默认情况下不会显示瞬态

    您需要使用约束(即id)显式隐藏其他隐藏字段

    注:以下代码未经测试,仅供说明

    //optional, but allows code completion in IDE ;-P
    String authorName
    
    String getAuthorName(){
       return a.firstName + ' ' + a.lastName
    }
    
    static transients = [authorName:String]
    
    static constraints = {
       id(display:false)
    }
    

    你有任何教程可以让我知道如何做选项3吗?如何自定义输出?我一直在搜索,但不知道从哪里开始更好地理解这两种情况下的脚手架您应该阅读文档:使用
    生成所有MyDomainClassName
    将生成控制器和视图。从那里你可以随意编辑它们。