这里的grails 2.3.8。当我g:link到某些 Controller Action 时,我想在 Controller 名称前面的URL中放置一个 namespace 。
例如:
call “app / apple / eat”->“app / admin / apple / eat”
由于涉及许多动态和静态脚手架 Controller ,我认为我可以使用一些UrlMappings表达式来完成此操作,但我不知道该怎么做。
我尝试了类似的尝试,但没有成功:
static mappings = {
"/apple/$action?/$id?" (redirect:"/admin/apple/$action?/$id?")
}
在AppleController中使用命名空间=“admin”也无法正常工作
谢谢你的建议
最佳答案
举个例子
call "app/apple/eat" -> "app/admin/apple/eat"
您可以通过grails-app / conf / UrlMappings.groovy使用以下配置(比整个应用程序更有效)来做到这一点:
class UrlMappings {
static mappings = {
"/admin/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
使用此配置,可以通过以下方式访问您的 Controller :
http://localhost:8080/apple/admin/apple/eat/1
etc.
要么!
如果仅在admin前缀下包含apple,则可以在grails-app / conf / UrlMappings.groovy中执行以下操作:
class UrlMappings {
static mappings = {
"/admin/apple/$action?/$id?"(controller : "apple")
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
要么!
如果您有更多重定向,则可以将它们分组在一起:
static mappings = {
group("/admin") {
"/apple/$action?/$id?(.${format})?"(controller: 'apple')
"/peach/$action?/$id?(.${format})?"(controller: 'peach')
}
...
关于grails - 将 namespace 放在url中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347457/