我正在使用Grails 2.1.0并在控制器上有一个save()动作,有两个参数:
def save(String templateId,String action)
当我提交一个带有名为“action”的字段的表单,其中包含vaule“xxxx”,并且我打印了动作,我得到“保存”。
doc说当前的动作名称应该在actionName变量**上,但似乎Grails也将动作名称放在我的“action”变量上。
任何人都知道为什么会这样?这是一个错误还是预期的行为?
** http://grails.github.io/grails-doc/2.1.0/ref/Controllers/actionName.html
答案 0 :(得分:2)
来自UrlMappings.groovy
的那个。映射配置行中的命名变量成为params
映射中的变量,因此默认映射
"/$controller/$action?/$id?(.$format)?"{
...
}
将创建一个controller
变量,如果指定了某个操作,则该变量将位于action
变量中,如果有{id},id
。您自己指定的任何变量也是如此,例如
"/api/v1.0/publish/$plugin/$version"(controller:"repository", action:"publish")
定义plugin
和version
变量。