【问题标题】:URLMappings With Optional Page Depth/URL Variable via Grails 3通过 Grails 3 使用可选页面深度/URL 变量的 URLMappings
【发布时间】:2017-06-24 18:30:13
【问题描述】:

我们正在使用 Grails 3.0.11 构建一个允许自定义页面创建的 Web 应用程序。页面可以选择包含选项卡,用户应该能够使用 URL 结构 /page/tab 直接链接到特定选项卡

到目前为止,/page 没有问题,但在 URL 中包含选项卡 ID 不会映射到分配的控制器 public(也不是操作)并且会引发 404。

class UrlMappings {

    static excludes = ["/images/*","/assets/*","/layouts/*","/js/*", "/css/*"]

    static mappings = {
        /$page?/$tabid{
            controller= 'public'
            action='findPage'
            constraints{
                page(matches:/[a-zA-Z]+/)
            }
        }

        "/"(controller:'public',action:'findPage')

        "/admin/**"(controller:'admin')
        "500"(view:'/error')
        "404"(view:'/notFound')
    }
}

编译器没有抛出其他错误。


尝试:

/$page/?$tabid ==> /page/tabid 没问题,/page 更改为 'pag' 截断并删除最后一个字符
/$page?/?$tabid ==> 同上...
/$page/$tabid ==>(预期)不会映射到 URL /page 的控制器,并正确映射到 URL /page/tab

【问题讨论】:

    标签: grails gradle groovy


    【解决方案1】:

    想通了——Grails 规范是在创建动态 URL 时在变量名的末尾包含问号运算符

     ... "/$page/$tabid?"{ ...
    

    是正确的映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多