【问题标题】:Grails scaffolding is displaying fewer columns than the domainGrails 脚手架显示的列比域少
【发布时间】:2012-03-02 13:39:43
【问题描述】:

我的域类中有 6 列。但是当脚手架设置为 true 时,我只在控制器列表上看到 5 列。 我的数据库是 mySql。当使用正确的列数创建执行表时 我的域类

class RouteDesc {
String routenumber
String routeoperator
String routeinstructions
Date validfrom
Date validto
String weekendavailablity

static constraints = {
    routenumber blank:false, unique:true,  display:true
    routeoperator blank:false,  display:true
    routeinstructions blank:true,  display:true
    validfrom display:true
    validto display:true
    weekendavailablity display:true
}
//static belongs to = RouteId

String toString () {
    return routenumber
}
}

我的控制器类

class RouteDescController {

  static scaffold = true
}

【问题讨论】:

  • 什么 Grails 版本?缺少哪一列?
  • weekendavailablity 缺失。

标签: grails controller scaffolding scaffold


【解决方案1】:

默认的脚手架列表页面将列数限制为 6(因为 eachWithIndex 从零开始),其中 1 个将用于 ID 列,因此仅显示 5 个属性。如果你想改变它,你可以通过grails install-templates 安装模板,这(在Grails 2.0 中)会将模板放在src/templates/scaffolding/ 下。您需要更新的模板是 list.gsp 大约一半以下的代码:

...
props.eachWithIndex { p, i ->
    if (i < 6) {
       ...
    }
}

您需要将 6 更改为您想要的任何值。作为旁注,字段通过脚手架出现的顺序可以通过它们在约束中定义的顺序来控制(http://grails.org/doc/latest/guide/scaffolding.html)。

【讨论】:

  • 我可以看到额外的列作为标题,但我没有看到列中的内容。
【解决方案2】:

Jarred Olson 建议的补充内容

props.eachWithIndex { p, i ->
  if (i < 6) {
   ...
  }

}

也要改

<td><g:link action="show" id="\${${propertyName}.id}">\${fieldValue(bean: ${propertyName}, field: "${p.name}")}</g:link></td>
                    <%      } else if (i < 6) {
                                if (p.type == Boolean.class || p.type == boolean.class) { %>
                        <td><g:formatBoolean boolean="\${${propertyName}.${p.name}}" />
</td>

【讨论】:

  • 在 Grails 2.4.3 中,上述更改将进入 src/templates/scaffolding/index.gsp。为确保上述两种更改保持同步,可以如下定义一个常量,然后在上述更改中引用此常量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 2021-08-09
  • 2017-07-29
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多