>我有一个GSP,呈现如下:
class MyController {
def start() {
Widget widgetr = getSomehow()
render(
view: "test",
model: widget
)
}
def doSomething() {
long fizzId = params.fizzId as Long
// do something with 'fizzId'...
}
}
在普惠制中,我有一个g:link
:
<g:link action="doSomething" id="${widget.fizzId}">Click me to do something!</g:link>
当用户单击该链接时,我希望执行MyController#doSomething
操作,并且我希望将widget.fizzId
(Long
)作为参数发送到该操作(例如 params.fizzId
)。
当我运行它时,我得到一个NullPointerException
将params.fizzId
转换为 Long,因为它为 null。
我能做些什么来完成这项工作?根据文档,我认为这就是id
属性的用途,但似乎我用错了它。想法?
首先,您需要使从控制器返回的模型成为Map
实例,例如
def start() {
Widget widgetr = getSomehow()
render(
view: "test",
model: [widget: widgetr]
)
}
在 link
标记中,您需要设置 params
属性而不是 id
属性,因为您要发送的参数未命名为 id
<g:link action="doSomething" params="${[fizzId: widget.fizzId]}">
Click me to do something!
</g:link>