혼란

2014-06-17 4 views
0

나는 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. 

). 내 새 매핑에도 동일한 경로가 유효합니다. 그러면 동적 매핑과 바인딩 방법을 식별하는 방법 매개 변수 개체입니다.

답변

0

명확한 단일 매핑 (예 : 중복)이있는 경우 가장 구체적인 매핑이 우선합니다 (최소 와일드 카드, 가장 정적 인 부분). 마침내 당신의 urlmappings의 주문은 결정한다.

수정 전 (잘못된 예를 설명 참조) 가 https://github.com/grails/grails-core/blob/master/grails-web-url-mappings/src/test/groovy/org/codehaus/groovy/grails/web/mapping/OverlappingUrlMappingsMatchingSpec.groovy

+1

2 개의 매핑 중 어느 것이 적합한지를 결정하는 순서가 아니라, "다른 특정"이 더 적은 " **'이중 와일드 카드, 또는 (2) 단일 와일드 카드가 적음, (3) 더 많은 정적 세그먼트가 순서대로). –

+0

http://grails.1312388.n4.nabble.com/URL-Mapping-question-td3556768.html#a3565451은 특이성 규칙의 소스 코드를 디코딩 한 것입니다. –

0

참조이 같은 2 매핑을 정의해서는 안 :

"/$day/$month"(controller: 'one', action: 'index') 

"/$month/$day"(controller: 'two', action: 'index') 

그의 문제점은 이제까지을 할 수있는 방법이 없다는 것입니다 전달 URL 매핑에 대해 이들을 구별합니다. 요청이 /5/6과 같은 경우에는 프레임 워크가 사용할 요청을 결정하는 좋은 방법이 없습니다. URL 역방향 조회에 도움이되는 명명 된 매핑을 사용할 수는 있지만 정방향 매핑은 여전히 ​​문제가됩니다. 그들이 의미를 갖기 위해 그들을 독특하게 만드는 무언가가 필요합니다. 서로 다른 접두사 나 제약 조건을 가질 수 있지만 위에서 설명한 것과 같은 2 개의 별도 매핑을 갖는 것은 의미가 없습니다. 프레임 워크가 그것들을 이해할 수있는 방법은 없습니다.

+0

URL을 입력하는 사람의 관점에서 생각해보십시오. 2 월 5 일에 조치를 취할 방법을 다른 사람에게 설명하는 경우 '/ 2/5'또는 '/ 5/2'에 제출하도록 지시 하시겠습니까? 5 월 2 일에 대해서 같은 질문. 패턴과 동일한 패턴이 해당 날짜에 유효한 대답 인 것 같습니다. 내가 설명한 매핑으로는 그럴 수 없습니다. –