Grails脚手架显示的列数少于域

时间:2012-02-10 02:08:36

标签: grails controller scaffolding scaffold

我的域类中有6列。但是当scaffold设置为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
}

2 个答案:

答案 0 :(得分:7)

默认的脚手架列表页面将列数限制为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)中定义它们的顺序来控制。

答案 1 :(得分: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>