grails如何将参数传递给控制器​​方法?

时间:2014-05-07 07:40:44

标签: grails

在grails控制器示例中,我看到了save(Model modelInstance)和save()。我试过他们两个,两个都有效。我想grails用params实例化modelInstance。我的假设是否正确?

我还注意到索引(Integer max),param必须命名为max吗?或者只要是数字,任何名称都可以使用吗?

这些参数传递如何在下面工作?

1 个答案:

答案 0 :(得分:13)

如果你写这样的控制器......

class MyController {
    def actionOne() {
        // your code here
    }

    def actionTwo(int max) {
        // your code here
    }

    def actionThree(SomeCommandObject co) {
        // your code here
    }
}

Grails编译器会将其转换为类似的内容(不完全是这样,但这有效地描述了我认为解决问题的方式)......

class MyController {
    def actionOne() {
        // Grails adds some code here to
        // do some stuff that the framework needs

        // your code here
    }

    // Grails generates this method...
    def actionTwo() {
        // the parameter doesn't have to be called
        // "max", it could be anything.
        int max = params.int('max')
        actionTwo(max)
    }

    def actionTwo(int max) {
        // Grails adds some code here to
        // do some stuff that the framework needs

        // your code here
    }

    // Grails generates this method...
    def actionThree() {
        def co = new SomeCommandObject()
        bindData co, params
        co.validate()
        actionThree(co)
    }

    def actionThree(SomeCommandObject co) {
        // Grails adds some code here to
        // do some stuff that the framework needs

        // your code here
    }
}

还有其他事情可以执行诸如强制执行allowMethods检查,强制执行错误处理等操作。

我希望有所帮助。