2012-02-10 56 views
2

我在我的域类中有6列。但是,当脚手架设置为true时,我只能看到控制器列表上的5列。 我的数据库是mySql。当用正确的列数 我的领域类Grails脚手架显示的列数少于域

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 
} 
+0

什么Grails的版本?哪一列丢失? – 2012-02-10 02:40:01

+0

周末可用性不见了。 – 2012-02-10 09:58:46

回答

2

还有一个除了什么震动奥尔森建议

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> 
+0

在Grails 2.4.3中,上述更改将进入src/templates/scaffolding/index.gsp。为确保上述两个变化保持同步,可以按如下定义一个常量,然后在上面的变化中引用这个常量。 <%final MAX_COLUMN_INDEX = 10%> – jkwuc89 2014-09-05 16:00:01

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)。

+3

eachWithIndex是从零开始的,所以它应该显示6 – 2012-02-10 03:18:38

+0

是的它显示6.1 ID + 5类文件 – 2012-02-10 09:59:15

+0

我能够看到额外的列作为标题,但我没有看到列中的内容。 – 2012-02-13 19:46:30