2012-02-12 2 views
0

나는 playframework 플래시 물건에 혼란 스럽다. 고수준은 http 리셋 후 http GET에서 검색 할 수 있도록 http POST에서 플래시에 물건을 넣는 것 " . 나는 GET 요청에 다음 GET 요청에서 검색 될 수 있지만 매우 매우 ick, UHU, 플래시가 탭 사이에서 공유되므로 해당 요청을 "할 수 있음"을 추측합니다.).playframework가 깜박 거리거나 깜박 거리 지 않음

내가 가진, 나중에 물론

if(Validation.hasErrors()) { 
     params.flash(); // add http parameters to the flash scope 
     Validation.keep(); // keep the errors for the next request(after redirect) 
     registerCompanyPage(); 
    } 

.... 나는 다음과 같은 가지고 있고 그것은 params.flash을 필요로하고 Validation.keep 또는 내 페이지 (좋은 지금까지) ... 작동이 중지 이것과

if(Validation.hasErrors() || !license) { 
     Validation.keep(); //BREAKS functionality!!!! as errors NEVER go away now after getting them just once 
     params.flash(); //BREAKS functionality as stuff NEVER goes away now 
     log.info("errors="+Validation.errors()); 
     flash.error("Errors in form"); 

     log.info("company url="+company.getCompanyUrl()); 
     render("@registerStep2Page", user, company, license); 
    } 

그래서 registerCompanyPage가의 코드가 렌더링 호출에도 불구하고 리디렉션을 수행했다 ....이 경우에 끊어짐이 그 기능 추가 ???? (나는이 코드를 여기에 게시하지 않았다.) 리다이렉트 (redirect)하는 두 번째 메소드에서 렌더링을 변경하면 컨트롤러가 전혀 발견되지 않고 완전히 작동을 멈춘다.

나는 playframework의 샘플에서 모든 유효성 검사를보고 모두 Validation.keep도 params.flash도없이 렌더링을 수행하므로 여기서는 어떻게됩니까? 한순간에, 나는 Validation.keep을 제거하고 다른 것이 망가 졌다고 생각했지만, 지금 당장 재현 할 수는 없다.

누구나 여기서 무슨 일이 일어나는지 완전히 이해할 수 있습니까?

덕분에, 딘

+0

이 질문은 매우 새로운 질문과 관련이 있습니다. 여기에서 물어보십시오 http://stackoverflow.com/questions/9253256/playframework-need-a-good-create-update-delete-example-using-same- html - 페이지 –

답변

1

공공 정적 메서드에 대한 모든 호출은 리디렉션을 호출합니다. (브라우저에서 url을 확인하여 원하는지, 즉 POST의 일부로 호출 한 작업과 동일하지 않은지 확인하십시오.)

첫 번째 예에서는 플래시를 사용해야하므로 원본 페이지로 리디렉션 한 후에도 오류가 사라지지 않습니다.

두 번째 예는 작업 내에서 직접 렌더링하는 것입니다. 따라서 플래시를 사용하면 다음 요청을 처리 할 준비가되었습니다. 오류가 없으므로 분명히 좋지 않습니다.

온라인으로 보는 예는 몇 가지 이유로 인해 다릅니다. 원래의보기는 플래시를 사용하고 리디렉션을 원래 페이지로 되 돌리는 것이 었습니다. 이렇게하면 URL과 현재보고있는 실제 페이지가 동기화됩니다. 그러나 플래시는 쿠키이므로 4KB 만 포함 할 수있는 매개 변수 및 오류 메시지를 저장하는 데 한계가 있습니다. 따라서 사람들은 일반적으로 두 번째 방법을 사용합니다. RESTfully 깨끗하지는 않지만 리디렉션이 없으므로 쿠키가 필요하지 않습니다.

+0

흠, 비 잔존 방식이 그 엉터리로 끝나지 않는다 "만약 당신이 돌아 간다면 우리는 정보 팝업을 재 게시해야 할 것이다"나는 당신이 비록 내가 크롬에서 어떤 이유로 그것을 얻지는 않을지라도 얻는가 ??? ? –

+0

예, 이것이 REST 메서드의 주요 이점 중 하나라고 생각합니다. – Codemwnci

관련 문제