2014-09-12 4 views
0

에서 라우터를 반대로 파라미터를 전달할 수 없다 사용자가 인증되지 않은 경우이 작업을 수행하는 작업 :은이 같은 경로를 정의 playframework

val continue = 
    if (request.method == "GET") request.uri 
    else routes.CtrlIndex.index().absoluteURL().toString() // This is not code duplication for reasons that are out of the scope of this question. 
Redirect(routes.Login.showForm(Some(continue))) 

ssage :

GET /login controllers.Login.showForm(continue: Option[String]) 

그러나 나는 자바 스크립트 역 라우터를 사용하는 경우, 그것은 생성 된 자바 스크립트에 다음과 같은 오류 발생 :

SyntaxError: missing formal parameter 
function(continue) { 
---------^ 

too many arguments for method showForm:()play.api.mvc.Call 
[error] Redirect(routes.Login.showForm(Some(continue))) 

경로 정의를 변경하면 작동한다

나는 함수 서명의 정의를 모두 조합하려고 시도했지만 자바 스크립트가 작동하면 다른 하나는 작동을 멈추거나 다른 방향으로 돌아 가지 않습니다. 어떻게/로그인

  • 사용 반대 자바 스크립트 라우터에

    • 선택적 매개 변수를 사용할 수 있습니다
    • 가 나는 또한 반환 뭔가 request.uri을 변경하려면 "계속"매개 변수/로그인에 리디렉션 절대 경로. 사전에

    감사

    PS. 스페인어로 된 것을 보시고 알려 주시면 고칠 것입니다. 코드는 원래 스페인어로되어 있습니다. 나는 그것을 읽은 후에도 무언가를 놓친 것 같습니다.

  • 답변

    1

    가능성이 원인은

    Play의 자바 스크립트 역 라우터가 컨트롤러의 경로와 경로 파일에 지정된 메소드의 인수 (들)을 사용하여 지정된 경로를 구성하는 reserved word 자바 스크립트에 "계속"이다; 귀하의 경우에, "계속"js 파서를 트리핑 수 있습니다 "삭제"라는 메서드를 잘 서버 측 작동하지만 클라이언트 쪽 역방향 라우터에서 폭발 할 것입니다.

    이것은 최신 브라우저에서는 문제가되지 않지만 이전 버전의 Internet Explorer에서 (지원해야하는) 메소드 이름을 "삭제"하여 물릴 수 있습니다.

    +0

    오, 나는 바보처럼 느껴진다. 밝은면에서, 나는 이것이 다시 나를 물지 않을 것이라고 생각한다. 감사! – Roger