【问题标题】:How to disable default URL mappings for some actions如何禁用某些操作的默认 URL 映射
【发布时间】:2017-07-05 13:18:21
【问题描述】:

我使用的是 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')
}

/$controller/$action... 映射在首次创建 Grails 项目时默认提供,并提供了我仍然希望用于其他一些操作的默认约定,但是我想排除myAction 的默认映射。我曾尝试在 UrlMappings.groovy 中使用excludes 设置:

static excludes = ['/my/myAction']

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

我怎样才能达到预期的行为?

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多