2012-06-26 15 views
1

Scala에서 Play Framework 2.0을 사용하고 있습니다.Play Framework 2.0 컨트롤러 동작에서 리디렉션

그래서 게시물 요청을위한 조치가 있습니다. 입력 데이터에 대해 유효성을 검사하고 입력이 유효하지 않은 경우 일부 다른 컨트롤러 작업 (예 : 이전 페이지로 돌아가 사용자에게 입력이 유효하지 않음을 알리기 위해)으로 리디렉션합니다.

내 코드가 무언가 보입니다. 같은 :

if (input.isNotValid) 
    Redirect(foo) 


// ... more code 

Redirect(bar) 

그래서 검증이 초기에있다, 거기 후 코드 라인, 그리고 행동의 맨 끝에 나는 다른 페이지로 리디렉션합니다.

내 문제는 유효성 검사가 실패해도 페이지가 Foo로 리디렉션되지 않는다는 것입니다.

if (input.isNotValid) 
    Redirect(foo) 
else 
    Redirect(bar) 

내가 내 모든 리디렉션을 넣어 필요하며 액션의 끝에서 OKS 이니 내가 대신 이렇게하면 코드가 작동?

나는 때때로 Ruby on Rails에서 이런 일이 발생한다는 것을 알고 있으며 그 해결책은 모든 리디렉션 후에 "돌아오고"반환하는 것입니다. Play Framework에서도해야 할 일이 있습니까?

답변

4

리디렉션은 호출하는 메소드로 제어를 반환하지 않습니다. 코드는 계속 실행됩니다. 유효하지 않은 데이터에 대한 리디렉션이 그 흐름에 대한 최종 발현되도록과 같이, 코드를 재 배열 :

if (input.isNotValid) 
    Redirect(foo) 
else { 
    // ... more code 
    Redirect(bar) 
} 

또한이 좀 더 명확하게 취할 수있는 다양한 분기를 게재하여 코드를 명확하게 할 수 있습니다. 데프 DATERANGE : 결과 = 액션 {암시 요청 => 지금은 단어의 요청에 누락 된 매개 변수 유형 컴파일을 얻을

+0

더 좋은 방법이 있습니까? 한 무리의 elses가있는 것이 약간 불필요한 것 같습니다. – theprestig3

0

시도해보십시오. '원래 리디렉션 (foo) 반환'

+0

내가이 같은 결과를 반환하는 내 행동의 정의를 변경했다 이렇게하려면 . – wynnch

관련 문제