在grails控制器示例中,我看到了save(Model modelInstance)和save()。我试过他们两个,两个都有效。我想grails用params实例化modelInstance。我的假设是否正确?
我还注意到索引(Integer max),param必须命名为max吗?或者只要是数字,任何名称都可以使用吗?
这些参数传递如何在下面工作?
答案 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检查,强制执行错误处理等操作。
我希望有所帮助。