在我的Play應用程序中,我有幾個可以從不同頁面觸發的動作(例如「刪除」一個實體)。觸發操作後,我想將用戶重定向到執行操作之前所在的頁面。在Play中使用這種模式有什麼好處?在動作後重定向到上一頁的模式
8
A
回答
2
這就是我最終想到的,雖然它不是特別優雅,我會對更好的方式感興趣。我添加了一個隱藏輸入我的形式與當前頁面的URL:
@(implicit request: RequestHeader)
...
<form action="@routes.Controller.doStuff()" method="post">
<input type="hidden" name="previousURL" value="@request.uri"/>
...
</form>
然後在我的控制器:
def doStuff() = Action { implicit request =>
val previousURLOpt: Option[String] =
for {
requestMap <- request.body.asFormUrlEncoded
values <- requestMap.get("previousURL")
previousURL <- values.headOption
} yield previousURL
previousURLOpt match {
case Some(previousURL) =>
Redirect(new Call("GET", previousURL))
case None =>
Redirect(routes.Controller.somewhereElse)
}
}
4
,你可以很容易地使用@request.getHeader("referer")
在你的模板,例如,如果你有一個取消按鈕這應該重定向到前一頁,使用此:
<a href="@request.getHeader("referer")">Cancel</a>
以這種方式,您不需要傳遞任何額外的信息到您的模板。 (與遊戲測試2.3.4)
1
我發現做到這一點最簡單的方法,是從你的控制器的方法中,使用這樣的:那麼
String refererUrl = request().getHeader("referer");
,你會做這樣的事情:
public static Result query(String queryStr, int page, int offset) {
String refererUrl = request().getHeader("referer");
Logger.info("refererUrl: " + refererUrl);
if(queryStr.length() < 3) {
flash(Application.FLASH_ERROR_KEY, "type a longer search than '" + queryStr.trim() + "'");
return redirect(refererUrl);
}
return ok(listings.render(searchService.searchListings(queryStr)));
}
請記住,您需要做一個重定向(),而不是一個渲染()與閃光消息。
相關問題
- 1. 登錄後重定向到上一頁?
- 2. 登錄後重定向到上一頁
- 3. 重定向到上一頁
- 4. 關閉模式後提交表單重定向到同一頁
- 5. 行動控制器後重定向到上一頁
- 6. angularjs - $ modalInstance.dismiss動作重定向頁面到模態的模板UIr
- 7. PHP保存一頁然後重定向到上一頁(ajax)
- 8. 登錄後重定向上一頁
- 9. 下載後重定向到另一頁
- 10. 提交後重定向到同一頁
- 11. 登錄到前一頁後重定向
- 12. 提交到下一頁後重定向
- 13. kaminari - 重定向到最後一頁
- 14. 登錄後重定向到另一頁
- 15. 後提交重定向到同一頁
- 16. 頁面驗證後重定向到上一頁
- 17. Laravel重定向登錄後,JavaScript重定向到另一頁
- 18. 在Zend Framework中提交後重定向到上一頁
- 19. 如何在登錄後重定向到上一頁
- 20. Django在外部OAuth登錄後重定向到上一頁
- 21. 將表單重定向回到Laravel的上一頁之後
- 22. liftweb S.error重定向到上一頁
- 23. 用php重定向到上一頁
- 24. 重定向到前一頁上laravel
- 25. Laravel Auth重定向到上一頁
- 26. 重定向回到上一頁php
- 27. 轉發重定向到上一頁
- 28. Rails - 正確重定向到上一頁
- 29. 如何重定向上一頁到wordpress
- 30. 自動重定向到另一頁?
您是否在尋找比通過request.getHeader檢索引用者並將其存儲在閃存或會話中更好的東西?我也希望聽到更好的方法。更新:剛剛意識到你問了斯卡拉。 –
@alihaider我粘貼了我在下面使用的解決方案,但也許使用引用者會更好? –
參見http://stackoverflow.com/questions/14891988/redirect-to-referer-after-a-post-request –