Grails - 管理视图URL

时间:2012-10-15 13:44:14

标签: grails urlmappings.groovy

问题在于:

我有一个网站项目(grails)我正在研究一堆无控制器的视图(这是在grails中请求的临时站点重写,没有真正的功能(因此没有控制器))并且视图是通过以下方式呈现:

"/**/$view"{
controller: 'staticViewController'
action: 'view'
}

其中“staticViewController”将视图输出为HTML,无论它在何处。

因此我的问题。

[site.com/about/something/dog.html]呈现的内容与[site.com/about/dog.html]相同,呈现与[site.com/stinkybutt/dog.html]相同

从上一个例子开始,更大的问题变得明显,因为显然我没有(或想要)名为“stinkybutt”的目录结构。

我可以在HTTPD中编写一堆垃圾重定向来解决这个问题,但我猜测有一个本机解决方案,因为其他使用grails的网站没有这个问题。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题 - 您正在寻找一种在网址映射的'**'部分应用约束的方法。我没有尝试过,但是从docs开始,您可以捕获通配符路径并将其存储在变量中。我知道你可以对变量应用约束,所以有了这些知识,我假设这样的东西可能有效:

"/$name**/$view"{
  controller: 'staticViewController'
  action: 'view'
  constraints {
    name(matches: /about/)
  }
}

以上内容应仅提供约/ dog.html,并返回404其他所有内容。另一方面,如果你想要为某些网址提供dog.html除外,你可以用以下内容来否定匹配:

name(matches: /?!*(stinkybutt|smellybutt)/)

注意:我的正则表达式真的很生锈,所以你可能不得不摆弄它

答案 1 :(得分:0)

所以...看起来像控制器的视图是平的(因为我没有控制器,所有都堆叠在"视图")。因此,我创建了特定于我想要存在的每个URL的URL映射。