我在Grails文档中看到了这个
static mappings = {
"/$blog/$year/$month/$day/$id"(controller: "blog", action: "show")
}
The above mapping would let you do things like:
/graemerocher/2007/01/10/my_funky_blog_entry
The individual tokens in the URL would again be mapped into the params object with values available for year, month, day, id and so on.
我有疑问的是,如果我还有一个不同的地图,那就是 / $ day /& month(上/ $ month / $ day)。即使相同的路径也适用于我的新映射,然后它如何识别哪个动态映射以及如何绑定到 params 对象。
答案 0 :(得分:0)
如果没有明确的单一映射(例如重叠),则最具体的映射获胜(最少通配符,大多数静态部分)。最后,你的urlmappings中的顺序决定了。
答案 1 :(得分:0)
你永远不应该像这样定义2个映射:
"/$day/$month"(controller: 'one', action: 'index')
"/$month/$day"(controller: 'two', action: 'index')
问题在于,无法区分它们以用于转发URL映射。如果请求变成类似/5/6
的内容,那么框架就没有好的方法来决定使用哪一个。您可以使用命名映射来帮助进行反向URL查找,但是前向映射仍然是一个问题。你需要一些使它们独一无二的东西才能使它们有意义。它们可能具有不同的前缀或约束,但是如上所述具有2个单独的映射是没有意义的。框架没有办法理解这些。