1

我正在使用 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. 我尝试使用excludesUrlMappings.groovy 中的设置:

static excludes = ['/my/myAction']

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

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

4

1 回答 1

2

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

"/$controller/$action?/$id?(.$format)?"{
    constraints {
        controller(validator: { return it != 'my'})
    }
}
于 2017-02-16T14:39:05.087 回答