grails - 如何为某些操作禁用默认URL映射

标签 grails groovy grails-controller grails-3.1 urlmappings.groovy

我正在使用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/

相关文章:

security - Grails 安全过滤除一项之外的所有操作

grails - 现有 Controller 网址的HTTP状态404

java - Gradle 任务列表

grails - 自定义 GORM 基本集合

postgresql - 域验证但不会保存

grails - Groovy-等待 promise list

loops - 在 Groovy 中何时使用 `each` 以及何时使用 `for` 循环

grails - 如何转换Grails中的日期?

grails-orm - 映射有很多关系并保存相关数据

grails - 从Grails中的 View 加载 Controller