2009-08-27 3 views
2

플래시이 :Grails는 내가 수행하는 컨트롤러 액션을 내 Grails의 응용 프로그램에서 범위

def activeMember = {ConfirmSignUpCommand signupCommand -> 

    flash.signupCommand = signupCommand 
    render(view: "confirmPassword") 
} 

confirmPassword.gsp의 양식은 다음과 같은 작용에 의해이 처리를 제출하는 경우 :

def validatePasswordConfirmation = { 

    def password = params.password 
    def command = flash.signupCommand 
}   

그러나 validatePasswordConfirmation 액션에 도달하면 플래시 범위가 비어 있습니다. 나는이 두 컨트롤러 동작 사이에 제출 된 요청이 없다는 것을 100 % 확신합니다. 플래시 스코프 오브젝트는 어디에서 사라 졌나요?

+0

그건 이상한데, 플래시 범위가 실제로 비어 있는지, 속성에 오류가 없습니다. signupCommand는 activeMember 액션에서 null이 아닙니까? 다른 모든 시도가 실패하면 grails를 깨끗하게하십시오. –

답변

6

flash 개체는 다음 요청 (즉, 리디렉션을 통해 개체를 다른 컨트롤러로 전달하는 데 자주 사용되는 confirmPassword.gsp 페이지 렌더링)에서 사용할 수 있습니다. confirmPassword.gsp 페이지가 다른 요청을 제출하면 플래시에 넣은 개체가 자동으로 지워집니다.

+0

'activeMember' 액션을 처리하고'confirmPassword' 뷰를 렌더링하는 것이 모두 같은 요청의 일부라고 생각했습니다. 내가 틀렸다고 생각해. 왜 모델을 사용할 수있을 때 액션에서 뷰로 데이터를 전달하기 위해 플래시 스코프를 사용해야하는지 모르겠습니다. 그래서 플래시 범위는 리다이렉트 다음에 데이터를 전달할 때만 유용하다고 생각하니? –

+1

메시지 또는 메시지 코드를보기로 전달할 때 플래시가 자주 사용됩니다 (예 : 이벤트 x가 저장되었습니다). 이는 플래시의 일반적인 유스 케이스이며 앞으로/리디렉션을위한 객체를 숨기는 것으로 보인다. –

+1

모델 (또는 요청 범위) 대신보기에 메시지를 전달하기 위해 플래시 범위를 사용할 수있는 특별한 이유가 있습니까? 나는 할 수 없다 ...... –

관련 문제