我有一个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'...
}
}
在GSP中,我有g:link
:
<g:link action="doSomething" id="${widget.fizzId}">Click me to do something!</g:link>
当用户点击该链接时,我希望执行MyController#doSomething
操作,并希望将widget.fizzId
(Long
)作为参数发送到该操作(例如{{1} })。
当我运行此操作时,我得到params.fizzId
将NullPointerException
转换为Long,因为它为null。
我可以做些什么来完成这项工作?根据{{3}},我认为这是params.fizzId
属性的用途,但似乎我错误地使用了它。想法?
答案 0 :(得分:3)
首先,您需要将从控制器返回的模型设为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>