我尝试渲染一个视图,它工作正常,但它似乎没有得到我传递给它的模型对象。我无法弄清楚原因,因为根据所有手册和示例,这应该是非常简单的。
模型对象
class Race {
def distance = "1/4 mile"
def racer1
def racer2
}
RaceController
在这里呈现
def doFullRace(Race race) {
render (view: 'raceProgress', model: [race: race])
}
和raceProgress.gsp
应该足够容易地显示它
<html>
<body>
<div id="raceStart" align="center">
...
<p>${race.racer1} is racing ${race.distance} against ${race.racer2}</p>
</div>
</body>
</html>
我错过了什么基本的想法?
你有以下几点:
def doFullRace(Race race) {
render (view: 'raceProgress', model: [race: race])
}
race
成为null
的方法之一是如果以下所有都是真的:
Race
是一个域类doFullRace
的请求包括一个名为id
的请求参数id
匹配的params.id
的记录来自http://docs.grails.org/3.3.9/guide/theWebLayer.html#commandObjects ......
如果命令对象的类型是域类的类型并且有一个id请求参数,那么不是调用域类构造函数来创建新实例,而是调用域类上的静态get方法和值的类。 id参数将作为参数传递。
和...
如果命令对象的类型是域类,并且没有id请求参数或者有一个id请求参数且其值为空,那么null将被传递到控制器操作,除非HTTP请求方法是“POST”,在这种情况下将通过调用域类构造函数创建域类的新实例。对于域类实例为非null的所有情况,仅在HTTP请求方法为“POST”,“PUT”或“PATCH”时才执行数据绑定。