grails - 将 namespace 放在url中

标签 grails url-mapping

这里的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/

相关文章:

email - Grails电子邮件确认插件假定上下文路径

grails - Grails URL映射安全问题

grails - 过滤器映射中无效的<url-pattern> *。在glassfish上部署grails 3应用程序期间

java - 如何在 Spring MVC 中为不存在的资源设置 url 映射?

python - 如何在Django中获取一个url对应的 View (使用url)?

maven - Spring应用程序未映射到Tomcat中

php - Quercus PHP Grails字符编码问题

Grails 和 Spring Security : license/usage agreement support

grails - Jboss 7 Blocks日志上的Grails项目

ajax - 在Grails中使用Ajax动态刷新图像