我尝试渲染一个视图,该视图工作正常,但似乎并没有获得传递给它的模型对象。我不知道原因,因为根据所有手册和示例,这应该非常简单。
模型对象
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>
关于我错过了哪些基本知识的任何想法?
答案 0 :(得分:1)
您具有以下条件:
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请求参数,而不是调用域类 创建新实例的构造方法将调用static 域类上的get方法,id参数的值将 作为参数传递。
然后...
如果命令对象的类型是域类并且没有ID request参数或一个id request参数,其值为 如果为空,则将null传递给控制器操作,除非 HTTP请求方法是“ POST”,在这种情况下, 域类将通过调用域类构造函数来创建。 对于域类实例为非空的所有情况,数据 仅当HTTP请求方法为“ POST”,“ PUT”时才执行绑定 或“ PATCH”。