Na Grails 2.3.7, załóżmy następujące mapowania URL ..Grails nie dopasowywania wzorców adresów URL z opcjonalnym parametrem
"/foo/$number?" (controller:'test', action:'actionOne')
"/foo/$number?/bar" (controller:'test', action:'actionTwo')
..i Kontroler:
class TestController {
def actionOne(){ render "Action_ONE: ${params.number}" }
def actionTwo(){ render "Action_TWO: ${params.number}" }
}
Wszystko dobre ...
/foo/1 //prints 'Action_ONE: 1'
/foo/2/bar //prints 'Action_TWO: 2'
/foo//bar //prints 'Action_TWO: null'
/foo// //prints 'Action_ONE: null'
... ale
/foo //prints 'Action_TWO: null'
/foo/ //prints 'Action_TWO: null'
Jeśli number
jest opcjonalny w /foo/$number?
, dlaczego /foo
i /foo/
mapę do actionTwo()
?
To replikacji w 2.4.2. Wygląda mi na błąd, możesz zgłosić problem JIRA tutaj https://jira.grails.org/browse/GRAILS. – dmahapatro
Czy opcjonalne składniki powinny działać w ogóle, jeśli nie znajdują się na końcu identyfikatora URI? –
@IanRoberts Chociaż nie jest to wyraźnie określone, zgodnie z dokumentami, tak, ale to nie jest problem, '/ foo /' nigdy nie powinien być odwzorowany na 'action2()'. btw, czy kolejność wzorców adresów URL wymienionych w 'URLMappings.groovy' ma znaczenie pod względem pierwszeństwa? Nie wierzę, po prostu ciekawi. – raffian