我有時會遇到一種情況,我正在嘗試設置URLMappings這樣:的Grails:設置URL映射優先
/** -> ContentController /static/$image/$imageNumber -> ResourcesController
然後,當我訪問/static/image/13
它通常會擊中/**
代替
/static/*/*的怎麼辦我告訴Spring/Grails寧願先嚐試匹配另一個?
我有時會遇到一種情況,我正在嘗試設置URLMappings這樣:的Grails:設置URL映射優先
/** -> ContentController /static/$image/$imageNumber -> ResourcesController
然後,當我訪問/static/image/13
它通常會擊中/**
代替
/static/*/*的怎麼辦我告訴Spring/Grails寧願先嚐試匹配另一個?
原來,Grails將來自更具體到最不具體,只要:
有時你需要重新啓動它的Grails正確生效。
"/other-test/$testname" { // Fired for "/other-test/hi-there/"
controller="test"
}
"/**" { // fired for "/something-else"
controller="test"
}
URL映射按照它們聲明的順序被命中,因此請將所有的
/**
都記錄下來。
編輯:這個答案在我的腦海裏迴盪,我在郵件列表中回想起something I read。回到Grails1.1左右,URLMappings按聲明的順序進行評估。但是,現在,URLMapping匹配稍微複雜一些。 URLMappings會嘗試通過比較通配符,靜態令牌和約束的數量來返回最佳匹配。你可以看到這in the source。
由於URL映射順序不再重要,它必須是別的東西(儘管我發現按粗略順序列出它們使得它們更易於閱讀)。它看起來像第二個片段實際上應該是一個靜態令牌。我會嘗試/static/image/$imageNumber
。
明天我會試試看第一件事!謝謝! – Spider
在Grails的它_should_總是喜歡'/靜態/ */*''以上/ **'與少''**通配符映射被視爲是更高的優先級。 –