2013-02-06 61 views
0

我有一個應用程序,註冊一個用戶。我通過各種頁面獲取用戶,並且每個人都從用戶那裏獲取一些數據,該信息存儲在會話中,並且僅在最後一頁中,數據存儲在DDBB中。格式良好的URL在Grails應用程序中

當第一頁被用戶滿足,他點擊「下一步」按鈕:

<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」,並介紹「registro2.gsp」...但呈現的網址與第一頁中的網址相同。我希望它是控制器/操作...並且不知道爲什麼url不會改變。

任何幫助?謝謝!

回答

0

你需要做的是創建一個動作來顯示registro2.gsp,然後做一個重定向具有執行registro2這樣後:

redirect(action: "showRegistro2") 

這樣的URL將發生變化。

+0

「registro2」行爲確實存在。事實上,它是處理從第一個視圖中挑選的數據的地方,驗證用戶名是唯一的,電子郵件實際上是一封電子郵件等。因此,如果我在那裏重定向到registro2,動作registro2將被執行兩次...我在會話中傳遞表單中的數據,如果我這樣做,我會丟失會話中的所有數據。 – Fustigador

+0

如果我編寫重定向:(action:「registro3」)將執行操作registro3,但在那裏,我處理來自registro3.gsp的數據...並且由於該頁面從不以那種方式顯示,所有內容都將爲空。而且,如果我使用render來代替重定向,那麼url永遠不會改變。這應該很容易,這不是火箭科學! – Fustigador

+0

你只需要創建一個新的動作來呈現你的jsp,然後你需要使用(重定向(action:「newAction」,user:userInstance))將你的對象傳遞給新動作。我會建議您在虛擬對象上生成腳手架,並查看Grails中的流如何管理。 –

0

我認爲這是表單工作的方式,以及Grails處理actionSubmit的方式。表單提交是默認的POST。由於POST是關於發送數據的(而不是某處,例如GET),所以URL保持不變。

您可以將表單更改爲method =「GET」,但我不認爲這會在使用Grails的actionSubmit時得到您想要的結果,因爲它仍然使用相同的URL(但使用了?_action_actionSubmitActionName = param作爲URL參數)。

通常你只是做一個重定向到另一個動作的動作接收表單POST:

redirect(action: "registroFinished") 

並有最終結果的registroFinished.gsp。

相關問題