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

How to disable default URL mappings for some actions

我使用的是 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... 映射默认提供,并提供默认约定,我仍然需要一些其他操作,但是我想排除 [=16] 的默认映射=].我尝试在 UrlMappings.groovy:

中使用 excludes 设置
static excludes = ['/my/myAction']

但是,端点 my/myAction 一直响应默认映射。

我怎样才能达到预期的效果?

路由 my/myAction 由默认 /$controller/$action 映射生成。因此,您将需要编辑该映射的约束部分以排除您的控制器,这样的事情应该有效(尽管有些丑陋):

"/$controller/$action?/$id?(.$format)?"{
    constraints {
        controller(validator: { return it != 'my'})
    }
}