我想在Play 2.0.3中實現一些流程控制,這種類型的嚮導有幾個步驟。 Play中最好的方法是什麼?在遊戲中的多步驟流程
我想擁有多步流動,像步驟1 - >步驟2 - >完成
的主要問題是不允許用戶跳過例如步驟2和直行完成(用戶可以手動輸入瀏覽器中的鏈接/完成)。
謝謝。如果我沒有很好地解釋我自己,請告訴我。
我想在Play 2.0.3中實現一些流程控制,這種類型的嚮導有幾個步驟。 Play中最好的方法是什麼?在遊戲中的多步驟流程
我想擁有多步流動,像步驟1 - >步驟2 - >完成
的主要問題是不允許用戶跳過例如步驟2和直行完成(用戶可以手動輸入瀏覽器中的鏈接/完成)。
謝謝。如果我沒有很好地解釋我自己,請告訴我。
一個完全無狀態方式可以包括在存儲在步網址,其中,所述步驟n + 1
包含來自步驟n
所有數據的所有數據:
GET /step1 controllers.Application.step1
GET /step2 controllers.Application.step2(dataFromStep1)
GET /step3 controllers.Application.step3(dataFromStep1, dataFromStep2)
POST /finish controllers.Application.finish
這種解決方案的優點是它的簡單性和事實上,在下一步之前檢查所有必需的步驟是否已經完成,由Play免費執行!路由器。
但是,如果您有大量數據,您的網址將非常龐大,從而使此解決方案不太適用。在這種情況下,您需要:
/step2
URL不會返回相同的內容;您至少有兩種選擇:
我會將步驟存儲在數據庫(長期)或緩存(短期)。這樣,您可以構建一些邏輯if (secondQuestionAnswered) { .. }
並確保您的用戶沒有跳過任何內容,並且/或者用戶可以在他想要的時候完成這些步驟。如果您的應用程序增長並且需要擴展,則堅持數據庫或緩存也會有所收益。
您不希望數據庫中存在不完整/不一致的數據。 –
我認爲將註冊數據存儲在URL中不是一個好主意,是嗎?我應該使用哪個應用程序塊設置超時以放棄不完整的提交併清理持久性存儲? – Temak
只要您使用https,請在URL或請求正文中存儲合理的數據(請參閱[本問題](http:// stackoverflow。COM /問題/ 499591 /是-HTTPS的網址加密/ 499594))。 –