Grails链接ID不会被发送回服务器

时间:2014-11-28 18:28:17

标签: grails gsp

我有一个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.fizzIdLong)作为参数发送到该操作(例如{{1} })。

当我运行此操作时,我得到params.fizzIdNullPointerException转换为Long,因为它为null。

我可以做些什么来完成这项工作?根据{{​​3}},我认为这是params.fizzId属性的用途,但似乎我错误地使用了它。想法?

1 个答案:

答案 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>