grails 对默认脚手架的小定制

Posted

技术标签:

【中文标题】grails 对默认脚手架的小定制【英文标题】:grails small customization to default scaffolding 【发布时间】:2013-11-07 22:29:23 【问题描述】:

使用默认的 grails 脚手架,最简单或最有效的方法是使“级别”字段介于 0 和 5 之间,作为选择列表下拉菜单?

或者,是否只有我安装模板并自定义它们才能做到。我已经阅读过这方面的内容,但除非必要,否则我不想这样做。

这是域类:

package treetester
class CustomerDivisionTreeNode 
    String name
    int level

    CustomerDivisionTreeNode parent

    static constraints = 
        parent(nullable: true)      
      

    static hasMany = [children: CustomerDivisionTreeNode]
    static mappedBy = [children:'parent']   

这是控制器类

package treetester
class CustomerDivisionTreeNodeController 
    def scaffold = CustomerDivisionTreeNode     

我在文档中看到,(http://grails.org/doc/latest/guide/scaffolding.html) 你可以这样做...

您还可以让生成器生成列表而不是文本 如果使用 inList 约束,则输入:

定义约束 = 标题() 类别(inList:[“小说”,“非小说”,“传记”]) 发布日期()

所以,逻辑告诉我我想要这样的东西:

level(inList:["0","1","2","3","4","5"])

但是把它放在哪里并让它发挥作用呢?

【问题讨论】:

“脚手架”是什么意思。据我了解,您需要使用值进行选择。为什么要搭脚手架? @baxxabit:我所说的“脚手架”是指 Grails 默认的脚手架,它动态地呈现该域的 CRUD。我的问题是,我可以更改动态生成的页面(基于默认脚手架)的显示方式吗?在此示例中,我想将“级别”字段从呈现为普通 更改为 @baxxabit:您关于脚手架的问题似乎表明您不了解 Grails 语句:def scaffold = CustomerDivisionTreeNode 也许你是对的 :) 你能试着解释一下,你是怎么理解的,def scaffold = CustomerDivisionTreeNode 是如何工作的?会发生什么? 下面是脚手架:grails.org/doc/latest/guide/scaffolding.html 文档描述了一小部分自定义设置。但是文档通常很少,并且有一些方法可以做没有记录的事情。我问的原因。 【参考方案1】:

所以答案是我忽略了域约束的最小和最大选项:这是在 GSP 上获得它的方法...

看线 级别可为空:真,最小值:1,最大值:5 下面...

class CustomerDivisionLevel 

Integer level
String levelName
Customer customer

static belongsTo = [Customer]

static mapping = 
    id generator: "assigned"


static constraints = 
    level nullable: true, min: 1, max: 5
    levelName nullable: true, maxSize: 45

【讨论】:

以上是关于grails 对默认脚手架的小定制的主要内容,如果未能解决你的问题,请参考以下文章

带有字节 [] 的 Grails 脚手架 404

Grails:调试脚手架模板

在 vaadin on grails 应用程序中启用脚手架

禁用一个类的 Grails 脚手架验证

覆盖脚手架控制器中的模板方法

带嵌入式的 Grails 脚手架