내 Play 앱에서 여러 페이지에서 트리거 될 수있는 여러 가지 작업 (예 : 항목을 '삭제')이 있습니다. 작업이 실행 된 후에 사용자가 작업을 수행하기 전의 페이지로 리디렉션하고 싶습니다. Play에서이를 위해 사용할 수있는 좋은 패턴이 있습니까?동작 후 이전 페이지로 리디렉션하는 패턴
8
A
답변
2
이것은 특히 우아하지는 않지만 내가 결국 생각해 낸 것이고 더 좋은 방법에 관심이 있습니다. 내 컨트롤러에서 다음
@(implicit request: RequestHeader)
...
<form action="@routes.Controller.doStuff()" method="post">
<input type="hidden" name="previousURL" value="@request.uri"/>
...
</form>
: 나는 현재 페이지 URL과 함께 내 양식에 숨겨진 입력을 추가
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)));
}
깜박임 메시지가있는 redirect()가 아니라 render()가 필요하다는 점에 유의하십시오.
관련 문제
- 1. Magento 로그인 후 이전 페이지로 리디렉션하는 방법
- 2. 로깅 후 이전 페이지로 리디렉션하는 방법
- 3. django facebook 이전 페이지로 리디렉션하는 방법
- 4. cakephp에 양식을 저장 한 후 이전 페이지로 리디렉션하는 방법은 무엇입니까?
- 5. django에서 이전 페이지로 리디렉션하는 방법은 무엇입니까?
- 6. 관리자의 이전 페이지로 리디렉션하는 방법은 무엇입니까?
- 7. 여러 위치에서 이전 페이지로 리디렉션하는 방법은 무엇입니까?
- 8. 레일 : 로그인/가입 후 이전 페이지로 리디렉션
- 9. 로그인 한 후 이전 페이지로 리디렉션 하시겠습니까?
- 10. 로그인 후 이전 페이지로 리디렉션
- 11. 레일 : 로그인 후 원래 페이지로 리디렉션하는 방법
- 12. 인증 후 캔버스 페이지로 리디렉션하는 방법은 무엇입니까?
- 13. 로그인 후 Routing.prefixes 페이지로 리디렉션하는 방법은 무엇입니까?
- 14. 속성 제출 후 홈 페이지로 리디렉션하는 방법
- 15. POST 요청 후 동일한 페이지로 리디렉션하는 방법
- 16. 댓글 후 동일한 페이지로 리디렉션하는 방법
- 17. 승인 후 캔버스 페이지로 리디렉션하는 방법
- 18. 로그인 후 이전 URL로 리디렉션하는 방법
- 19. asp.net에서 페이지로 리디렉션하는 방법?
- 20. 오류 페이지로 리디렉션하는 방법
- 21. 폴더를 페이지로 리디렉션하는 MVC
- 22. 동일한 페이지로 리디렉션하는 방법
- 23. 로그 아웃 할 때 이전 페이지로 사용자를 리디렉션하는 방법?
- 24. 이전 PHP URL을 새 ASP 페이지로 리디렉션하는 데 문제가 있습니다.
- 25. 봄 보안 액세스 거부 이전 페이지로 리디렉션하는 방법?
- 26. .htaccess를 사용하여 이전 CakePHP 페이지에서 CakePHP가 아닌 페이지로 리디렉션하는 방법
- 27. PHP를 사용하여 이전 페이지로 리디렉션하는 가장 쉬운 방법은 무엇입니까?
- 28. ZK - 사용자를 이전 페이지로 리디렉션합니다.
- 29. 인증 후 사용자를 이전 페이지로 리디렉션 (yii2)
- 30. 로그인 후 이전 페이지로 리디렉션 php
request.getHeader를 통해 referer를 검색하고 플래시 또는 세션에 저장하는 것보다 나은 것을 찾고 있습니까? 나는 더 나은 방법에 대해서도 듣고 싶어합니다. 업데이트 : 방금 스칼라에 대해 물었다는 것을 깨달았습니다. –
@alihaider 아래에서 사용한 솔루션을 붙여 넣었습니다.하지만 리퍼러를 사용하는 것이 더 좋을까요? –
참조 http://stackoverflow.com/questions/14891988/redirect-to-referer-after-a-post-request –