因此,我刚刚开始将Grails / Groovy用于我的高级顶点项目,并且我的工作有些艰难。我遇到的问题是,当我在 Controller 中设置模型的映射时,我可以遍历它并将其打印到控制台,但是当我尝试从 View 中访问它时,我会得到空白页。
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()
...
这是我的 Controller :
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>
最令人困惑的部分是,如果我尝试使用相同的代码,但使用不同的Domain,则效果很好。我已经解决了这个问题几天了,但是没有任何帮助,我们将不胜感激!
最佳答案
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]
}