所以我刚刚开始使用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>
最令人困惑的部分是,如果我尝试相同的代码,但使用不同的域,它可以正常工作。我已经解决了这个问题几天,但没有用,所以任何帮助都会非常感激!
答案 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]
}