无法在gsp页面中显示模型

时间:2014-10-28 14:21:28

标签: grails groovy

所以我刚刚开始使用Grails / Groovy作为我的高级顶点项目,而且我的开始有点不稳定。我遇到的问题是,当我在控制器中设置模型的映射时,我可以遍历它并将其打印到控制台,但是当我尝试从视图中访问它时,我得到空白页。

Domain类很简单:

package ot

class CrewDeskMapping {
    String crewDesk
    String desk
}

创建测试数据的Bootstrap文件:

...
new CrewDeskMapping(crewDesk:"North",desk:"MON1").save()
new CrewDeskMapping(crewDesk:"North",desk:"TWI1").save()
new CrewDeskMapping(crewDesk:"North",desk:"NWE1").save()
...     

这是我的控制器:

import ot.CrewDeskMapping;

class DashboardController {

def index() { 

    def desks = CrewDeskMapping.list()
    [desks:desks]
    for (d in desks) {
        System.out.println(d.desk);
    }
}
}

并且控制台输出看起来应该如此:

MON1
TWI1
NWE1
CHI1
COL1
...

我的index.gsp的相关部分

<body>
<g:each in="${desks}">
    <p>Title: ${it.crewDesk}</p>
    <p>Author: ${it.desk}</p>
</g:each>
</body>

最令人困惑的部分是,如果我尝试相同的代码,但使用不同的域,它可以正常工作。我已经解决了这个问题几天,但没有用,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

def desks = CrewDeskMapping.list()
[desks:desks]
for (d in desks) { ...

不会返回您的[desks: desks]

交换for[desks: ...]或在末尾添加一个正确的return语句,如下所示:

def index() {
    def desks = CrewDeskMapping.list()
    desks.each{ log.debug it.desk } // groovier debug print
    // must be last in the method like a regular return in java,
    // but groovy allows implicit return of the last statement
    /*return*/ [desks:desks]
}