2012-10-15 4 views
0

여기에 문제의 이를 (따라서 아니오 컨트롤러)) 및 뷰와 기능은 다음을 통해 렌더링 "staticViewController는"상관없이 어디 HTML로도 출력되지 Grails의 관리보기 URL을

"/**/$view"{ 
controller: 'staticViewController' 
action: 'view' 
} 

.

내 문제.

[site.com/about/something/dog.html]

는 [site.com/about/dog.html]와 동일한

[site.com/stinkybutt/dog.html]와 같은 렌더링 렌더링

마지막 예제에서 "stinkybutt"라는 디렉토리 구조가 없기 때문에 더 큰 문제가 분명해진다.

이 문제를 해결하기 위해 HTTPD에 쓰레기를 넘길 수 있지만 grails를 사용하는 다른 사이트에는이 문제가 없기 때문에 기본 솔루션이 있다고 생각합니다.

제안 사항?

+0

좋아, 그럼 한 줄 질문에 뭘 원합니까? 컨트롤러가 URL을 기반으로보기를 동적으로 찾으려면? –

+0

거짓말에 문제가 있습니다.보기를 렌더링하는 컨트롤러가 하나뿐입니다. 본질적으로 site /about/dog.html을 해당 URL에서만 사용할 수 있습니다. 나는 명시적인 매핑/리다이렉트 이외에 이것을 제거하는 방법을 볼 수 없다. – user1612272

+0

컨트롤러가이를 처리하고 응답에 404를 추가 할 수 있습니다. –

답변

0

질문을 올바르게 이해하고 있다면 URL 맵의 '**'부분에 제약 조건을 적용 할 방법을 찾고 있습니다. 나는 그것을 시도하지 않았지만 docs에서 와일드 카드 경로를 캡쳐하여 변수에 저장할 수 있습니다. 나는 작동 할 수 같은 것을 있으리라 믿고있어 그 지식을 가진 있도록, 변수에 제약 조건을 적용 할 수 있습니다 알고

"/$name**/$view"{ 
    controller: 'staticViewController' 
    action: 'view' 
    constraints { 
    name(matches: /about/) 
    } 
} 

위의 단/dog.html에 대한 최대 봉사하고 다른 모든 것들에 대한 404를 반환해야합니다.

name(matches: /?!*(stinkybutt|smellybutt)/) 

참고 : 당신이 모든 특정 URL을 제외하고 dog.html을 제공 할 경우, 다른 한편으로는, 당신은 같은과 함께 경기를 부정 할 수는 바이올린해야 할 수도 있습니다, 그래서 내 정규식, 정말 녹슨입니다 그것

+0

이것은 실제로 더 나은 방법을 보지 못해서 계속 노력해 왔습니다. 좋은 결과를 내기 위해 제약 조건을 얻으려고합니다 .... – user1612272

+0

이렇게 닫으면 ... "/ about /"의 항목을 제한하지만 "/ about /"("/news/stuff.html" "/about/stuff.html"로 렌더링 할 수 있음) – user1612272

0

그래서 ...보기가 컨트롤러에 평평한 것처럼 보입니다. (컨트롤러가 없으므로 "보기"아래에 스택되어 있습니다). 따라서, 나는 존재시키고 자하는 각각의 URL에 특정한 URL 맵핑을 생성 할 것이다.