我使用的是Grails版本3.1.12。
我想为操作禁用一些默认的URL映射,以便手动管理它们。例如,给定控制器:
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
会一直响应默认映射。
如何实现理想的行为?
答案 0 :(得分:1)
路由my/myAction
由默认的/$controller/$action
映射生成。因此,您需要编辑该映射的约束部分以排除您的控制器,这样的事情应该可行(Albiet有些丑陋):
"/$controller/$action?/$id?(.$format)?"{
constraints {
controller(validator: { return it != 'my'})
}
}