5
On Grails 2.3.7, giả sử các bản đồ url sau ..Grails không phù hợp với mẫu url với tham số tùy chọn
"/foo/$number?" (controller:'test', action:'actionOne')
"/foo/$number?/bar" (controller:'test', action:'actionTwo')
..và điều khiển:
class TestController {
def actionOne(){ render "Action_ONE: ${params.number}" }
def actionTwo(){ render "Action_TWO: ${params.number}" }
}
Tất cả tốt ...
/foo/1 //prints 'Action_ONE: 1'
/foo/2/bar //prints 'Action_TWO: 2'
/foo//bar //prints 'Action_TWO: null'
/foo// //prints 'Action_ONE: null'
... nhưng
/foo //prints 'Action_TWO: null'
/foo/ //prints 'Action_TWO: null'
Nếu number
là tùy chọn trong /foo/$number?
, tại sao /foo
và /foo/
bản đồ để actionTwo()
?
Đây là bản sao trong 2.4.2. Trông giống như một lỗi đối với tôi, bạn có thể nêu vấn đề JIRA tại đây https://jira.grails.org/browse/GRAILS. – dmahapatro
Các thành phần tùy chọn có hoạt động không nếu chúng không nằm ở cuối URI? –
@IanRoberts Trong khi không được khai báo rõ ràng, theo các tài liệu, có, nhưng đó không phải là vấn đề, '/ foo /' không bao giờ nên ánh xạ tới 'action2()'. btw, có phải thứ tự các mẫu URL được liệt kê trong vấn đề 'URLMappings.groovy' về quyền ưu tiên không? Tôi không tin như vậy, chỉ tò mò thôi. – raffian