Grails 如何禁用某些操作的默认URL映射

Grails 如何禁用某些操作的默认URL映射,grails,groovy,grails-controller,grails-3.1,urlmappings.groovy,Grails,Groovy,Grails Controller,Grails 3.1,Urlmappings.groovy,我使用的是Grails版本3.1.12 我想为操作禁用一些默认URL映射,以便手动管理它们。例如,给定控制器: class MyController { myAction() { render('Hello') } } 默认情况下,此操作映射到my/myAction,但是我想禁用此映射,并使用类似于UrlMappings.groovy中定义的自定义映射: static mappings { "/$controller/$action?/$id?(.

我使用的是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')
}
static excludes = ['/my/myAction']
/$controller/$action…
映射在第一次创建Grails项目时默认提供,并提供我仍然希望用于某些其他操作的默认约定,但是我想排除
myAction
的默认映射。我已尝试在UrlMappings.groovy中使用
排除
设置:

static mappings {

     "/$controller/$action?/$id?(.$format)?"{
        constraints {
            // apply constraints here
        }
    }

    '/myCustomAction'(controller: 'my', action: 'myAction')
}
static excludes = ['/my/myAction']
但是,端点
my/myAction
会继续响应默认映射


如何实现所需的行为?

路由
my/myAction
由默认的
/$controller/$action
映射生成。因此,您需要编辑该映射的“约束”部分,以便排除控制器,类似的操作应该会起作用(albiet some what sugger):


您的控制器如何映射到
my/myAction
?是否应该是
myController/myAction
?@DegenSharew Grails中的约定是
controllerName/actionName
,其中名称不包含类名的“Controller”部分。看见