我正在使用Grails 3.1.12版本。
我想为操作禁用一些默认的URL映射,以便手动管理它们。例如,给定 Controller :
class MyController {
myAction() {
render('Hello')
}
}
默认情况下,此操作映射到
my/myAction
,但是我想禁用此映射,并使用UrlMappings.groovy中定义的自定义控件:static mappings {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
'/myCustomAction'(controller: 'my', action: 'myAction')
}
第一次创建Grails项目时,默认情况下会提供
/$controller/$action...
映射,并提供了我仍然希望用于其他操作的默认约定,但是我想排除myAction
的默认映射。我尝试使用UrlMappings.groovy中的excludes
设置:static excludes = ['/my/myAction']
但是,端点
my/myAction
继续响应默认映射。如何实现所需的行为?
最佳答案
路由my/myAction
由默认的/$controller/$action
映射生成。这样,您将需要编辑该映射的constraints部分以排除您的 Controller ,这样的方法应该可以工作(虽然有些丑陋):
"/$controller/$action?/$id?(.$format)?"{
constraints {
controller(validator: { return it != 'my'})
}
}
关于grails - 如何为某些操作禁用默认URL映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273783/