grails - Grails中的URL映射前缀

标签 grails url-routing

最近,我正在尝试将我的应用程序从CakePHP迁移到Grails。到目前为止,一切都很顺利,我可以使用CakePHP进行所有操作,而用Grails编写的代码却少得多。但是,我有一个问题:

在CakePHP中,有一个URL前缀功能,使您可以给某个操作url加上前缀,例如,如果我的 Controller 中包含以下操作:

PostController
admin_add
admin_edit
admin_delete



我可以简单地从URL进行访问:

mysite/admin/post/add
mysite/admin/post/edit/1
mysite/admin/post/delete/2



代替:

mysite/post/admin_add
mysite/post/admin_edit/1
mysite/post/admin_delete/2



无论如何,Grails中是否有这样做的方法,或者至少有其他替代方法?

最佳答案

在这种特殊情况下,Grails URL映射文档无法为您提供帮助(Amra,下次您自己尝试并仅在有帮助的情况下发布答案)。 Daniel的解决方案很接近,但是行不通,因为:

  • 动态创建时,操作部分必须处于闭合状态
  • 可以通过params对象
  • 访问除“controller”,“action”和“id”之外的所有命名参数

    一个解决方案可能看起来像这样:
        "/admin/$controller/$adminAction?/$param?"{
        action = { "admin_${params.adminAction}" }
    }
    

    关键是不要将参数命名为“action”,因为它似乎直接映射到一个 Action ,并且不能被覆盖。

    我还尝试了带有通用前缀的动态解决方案,它似乎也可以正常工作:
        "/$prefix/$controller/$adminAction?/$param?"{
        action = { "${params.prefix}_${params.adminAction}" }
    }
    

    关于grails - Grails中的URL映射前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058809/

    相关文章:

    java - Grails 中的全局对象

    grails - 代理 : install grails fails with 'curl received HTTP 403 from proxy after CONNECT' 后面的 sdkman

    grails - Grails:如何查找域属性没有任何错误

    带有 .html 的 Grails UrlMappings

    google-app-engine - 使用 dispatch.yaml 进行 Google App Engine 路由

    php - PHP 中伪造方法属性?

    grails - grails Controller 中的动态类名

    regex - 如何创建处理如下 URL 的 Express 路由?

    python - Flask:为什么在根路由中有路径转换器不起作用?

    javascript - AngularJS - 将数据从一个应用程序发送到另一个应用程序