【问题标题】:Grails Scaffolding圣杯脚手架
【发布时间】:2014-08-25 12:36:07
【问题描述】:

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

例如,如果我想搭建一个班级

class Book{
  Author a
  Publisher p

  // ....
}

作者类

class Author{
   String firstName
   String lastName
   // ...
}

发布者类

class Publisher{
    String name
    String address
    // ....
}

如果我有一个 BookController

class BookController{
   static scaffold = true;
}

我有一个布局

作者       出版商

但是,如果我想要一个布局

AuthorID       AuthorFirstName        AuthorLastName        PublisherName        PublisherAddress

我查看了http://grails.org/doc/latest/guide/scaffolding.html,但是,我无法将其设置为给定的属性。我想知道我能做到吗?教程会很有帮助。

【问题讨论】:

    标签: grails grails-orm scaffolding


    【解决方案1】:

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

    1. 使用install-templates 命令并修改脚手架模板以满足您的需求。

    2. 重新设计您的域类以使用嵌入的AuthorPublisher。这将改变脚手架的输出,但它也会改变更多。除非您了解这将对您的域模型所做的所有更改,否则我不会使用此选项。

    3. 使用脚手架生成代码,然后自定义输出以满足您的需求。

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

    【讨论】:

    • 您是否有任何教程可以让我知道如何执行选项 3?我如何能够自定义我的输出?我一直在寻找,但不知道从哪里开始
    • 为了更好地理解这两种情况下的脚手架,您应该阅读文档:grails.org/doc/latest/guide/scaffolding.html 使用 generate-all MyDomainClassName 将生成控制器和视图。从那里您可以随意编辑它们。
    【解决方案2】:

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

    您需要modify the templates 并使用约束(即 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)
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多