2013-02-06 2 views
0

사용자를 등록하는 애플리케이션이 있습니다. 나는 다양한 페이지를 통해 사용자를 얻으며 모두가 사용자로부터 데이터를 취하고 그 정보는 세션에 저장되며 마지막 페이지에서만 데이터가 DDBB에 저장됩니다. 사용자에 의해 도입 된 데이터가 검증 동작 "registro2"의 컨트롤러Grails 애플리케이션의 올바른 형식의 URL

<div class='btn_sig_pag_uno'> 
       <!-- <fieldset id="barra">--> 
       <g:actionSubmit action="registro2" 
        title="${message(code:'infoPersonal.siguiente') }" 
        name="siguiente" class="siguiente" 
        value="${message(code: 'infoPersonal.siguiente', default: 'Siguiente')}" 
        style="cursor:pointer" /> 

       <!-- </fieldset>--> 
      </div> 

에서,, 및 : 첫 페이지가 사용자에 의해 성취

그는 "다음"버튼을 클릭 "registro2.gsp"가 표시되지만 제시된 URL은 첫 번째 페이지와 동일합니다. 컨트롤러/액션이되고 싶습니다. 왜 URL이 바뀌지 않는지 모르겠습니다.

어떤 도움이 필요합니까? 고맙습니다! 당신이해야 할 일은

답변

0

registro2.gsp를 표시하는 작업을 생성하는 것입니다 다음 실행이 같은 registro2을 가진 후 리디렉션을 수행 URL이 변경됩니다

redirect(action: "showRegistro2") 

그 방법을.

+0

"registro2"작업이 존재합니다. 실제로 첫 번째보기에서 선택한 데이터가 처리되고 사용자 이름이 고유하며 전자 메일이 실제로 전자 메일인지 확인됩니다. 따라서 registro2에 리디렉션을 배치하면 registro2 작업이 두 번 실행됩니다 ... 세션에서 모든 데이터를 잃어버린 경우 세션의 양식에서 데이터를 전달하고 있습니다. – Fustigador

+0

그리고 리디렉션을 작성하는 경우 (작업 : "registro3") registro3 작업이 실행되지만 거기에서 registro3.gsp의 데이터를 처리하고 그 페이지가 절대로 표시되지 않으므로 모든 것이 null이됩니다. 리디렉션 대신 렌더링을 사용하면 URL이 변경되지 않습니다. 이것은 쉽지 만, 로켓 과학이 아닙니다! – Fustigador

+0

jsp를 렌더링 할 새 액션을 생성하기 만하면, (redirect (action : "newAction", user : userInstance))를 사용하여 새 액션에 객체를 전달해야합니다. dummy 객체에서 스캐 폴딩을 생성하고 Grails에서 플로우를 관리하는 방법을 살펴볼 것을 권합니다. –

0

저는 이것이 양식 작업과 Grails가 actionSubmit을 다루는 방법이라고 생각합니다. 양식 제출은 기본적으로 POST입니다. POST는 데이터를 전송하기위한 것이므로 (예 : GET과 같은 어딘가로 가지 않아도 됨) URL은 동일하게 유지됩니다.

양식을 변경하여 method = "GET"으로 설정할 수 있지만 Grails의 actionSubmit을 사용할 때 원하는 URL을 얻을 수 있다고 생각하지는 않습니다. 여전히 동일한 URL을 사용하지만 (? _action_actionSubmitActionName = param을 URL 매개 변수로 사용하기 때문에)).

보통 다른 행동 양식 POST를 수신 액션 리디렉션을 단지 것 :

redirect(action: "registroFinished") 

을 그리고 최종 결과에 대한 registroFinished.gsp 있습니다.

관련 문제