我有时会遇到一种情况,我正在尝试设置URLMappings:
/** -> ContentController /static/$image/$imageNumber -> ResourcesController
然后,当我访问/static/image/13
时,它会经常点击/**
而不是
/static/*/*如何告诉Spring / Grails先尝试匹配另一个?
答案 0 :(得分:3)
URL映射按照声明的顺序命中,因此最后将所有 /**
保留。
编辑:这个答案在我脑海中浮现,我回忆起邮件列表上的something I read。回到Grails 1.1左右,URLMappings按声明的顺序进行评估。但是,现在,URLMapping匹配稍微复杂一些。 URLMappings将尝试通过比较通配符,静态标记的数量以及最终的约束数来返回最佳匹配。您可以看到此in the source。
由于URL映射顺序不再重要,因此它必须是其他内容(尽管我发现按粗略顺序列出它们使得更容易阅读它们)。看起来第二个片段实际上应该是静态令牌。我试试/static/image/$imageNumber
。
答案 1 :(得分:1)
事实证明,Grails将从更具体到最不具体,只要:
有时您需要重新启动grails才能正常生效。
"/other-test/$testname" { // Fired for "/other-test/hi-there/"
controller="test"
}
"/**" { // fired for "/something-else"
controller="test"
}