gpt4 book ai didi

Grails UrlMapping 重定向以保持 DRY

转载 作者:行者123 更新时间:2023-12-02 01:42:29 25 4
gpt4 key购买 nike

我正在使用 Grails 2.1.1 并希望添加一些映射到 Controller 操作的自定义 URL。

我可以做到这一点,但原始映射仍然有效。

例如,我在 UrlMappings 中创建了一个映射 add-property-to-directory,如下所示:

class UrlMappings {

static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}

"/"(view:"/index")
"500"(view:'/error')
}
}

现在,我可以点击 /mysite/add-property-to-directory,它将执行 PropertyController.create,正如我所期望的那样。

但是,我仍然可以点击 /mysite/property/create,它将执行相同的 PropertyController.create 方法。

本着 DRY 的精神,我想进行从 /mysite/property/create/mysite/add-property-to-directory 的 301 重定向。

我在 UrlMappings.groovy 中找不到执行此操作的方法。有谁知道我可以在 Grails 中完成此任务的方法吗?

非常感谢!

更新

这是我根据汤姆的回答实现的解决方案:

UrlMappings.groovy

class UrlMappings {

static mappings = {

"/add-property-to-directory"(controller: "property", action: "create")
"/property/create" {
controller = "redirect"
destination = "/add-property-to-directory"
}


"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}

"/"(view:"/index")
"500"(view:'/error')
}
}

RedirectController.groovy

class RedirectController {

def index() {
redirect(url: params.destination, permanent: true)
}
}

最佳答案

可以实现这一点:

"/$controller/$action?/$id?" (
controller: 'myRedirectControlller', action: 'myRedirectAction', params:[ controller: $controller, action: $action, id: $id ]
)

"/user/list" ( controller:'user', action:'list' )

在操作中,您将获得参数中的正常值:

log.trace 'myRedirectController.myRedirectAction: ' + params.controller + ', ' + params.action + ', ' + params.id

关于Grails UrlMapping 重定向以保持 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com