2014-12-27 4 views
2

재생 프레임 워크를 사용하여 정규식을 사용하여 경로를 찾으려고합니다.내 경로가 어떤 작업과도 일치하지 않는 이유

mydomain.com/my-post-title-123

mydomain.com/another-post-title-124 : 내가 원하는 무엇

이 모든 URL을 매핑 한 조치를 사용하는 것입니다

mydomain.com/a-third-post-title-125

이 제어기는 사용할 수있는 URL의 끝에서 "123, 124, 125"GET 있도록. 기본적으로 포스트 타일이 무엇이든간에 무시하고 끝에있는 번호 만 사용하십시오.

나는 내 routes.conf

GET   /$postId<\d$>   controllers.Posts.viewPost(postId: Int) 

에 다음이하지만 난에서 정규식에

+0

url의 마지막 자리수를 얻고 싶다면 간단히'\ d + $'를 사용하십시오. 어쨌든 코드의 정규 표현식은 regex101의 정규 표현식과 다릅니다! (누락 된'$') – Enissay

+0

덕분에, 당신이 제안한 표현을 시도하고 훨씬 더 간단하고 또한 내가 필요로하는 것과 일치합니다 ... 그러나 행동과 일치하는 놀이로 여전히 운이 없음 –

+0

당신은' '\ d + $'!!! 여전히 운이 없다면 xD – Enissay

답변

1

당신은 URL 접두어를 놓치고있다 "+"오류 페이지를 찾을 수 없습니다 "액션"을 얻을 경로 정의. 여기 ** 테스트 내 경로 구성이하고

def viewPost(prefix:String,postId:Int) = Action{ 
    Ok("the post id is: "+postId+" the prefix is:"+prefix) 
    } 

Controllers.Application.viewPost

#Regex test 
GET   /$prefix<.*>$postId<\d+$>   controllers.Application.viewPost(prefix:String,postId: Int) 

잘 작동하고 출력이

the post id is: 123 the prefix is "whatever/prefix/you/give" 

될 것, 그것을 작동합니다.

+0

덕분에 해당 프레임 워크를 전달할 수있는 사람을 기다리는 다른 사용자를 기다려야하지만 정규식을 사용하고 있으므로 각 게시물마다 하나의 액션을 작성할 필요가 없습니다. 나는 당신이 제안하는대로 URL 프리픽스를 실제로 추가 할 수 없다. –

+0

각 접두어에 대해 하나의 액션을 작성하고 싶지 않는다고 가정했다. 업데이트 된 답변을 확인하고 2 개의 정규식을 사용하고 하나는 접두사를 캡처하고 하나는 ID를 캡처합니다. 요점은 당신의 정규 표현식에서 경로의 모든 것을 포착하고 접두어를 원하지 않는다면 나중에 무시하십시오 – vumaasha

+1

감사합니다,이 말은'$ 접두사 <.*-> $ postId <\d+$>' –

관련 문제