Nella mia app Play, ho diverse azioni (ad esempio "Elimina" un'entità) che possono essere attivate da pagine diverse. Dopo l'attivazione dell'azione, vorrei reindirizzare l'utente alla pagina in cui si trovavano prima che eseguissi l'azione. C'è un buon modello da usare per questo in Play?Pattern per il reindirizzamento alla pagina precedente dopo un'azione
risposta
Questo è quello che ho inventato alla fine, anche se non è particolarmente elegante, e sarei interessato a modi migliori per farlo. Ho aggiunto un input nascosto alla mia forma con l'URL della pagina corrente:
@(implicit request: RequestHeader)
...
<form action="@routes.Controller.doStuff()" method="post">
<input type="hidden" name="previousURL" value="@request.uri"/>
...
</form>
Poi, nel mio controller:
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)
}
}
da poter usare facilmente @request.getHeader("referer")
nei modelli, ad esempio, se si dispone di un pulsante di annullamento che dovrebbe favore usare pagina precedente, utilizzare questo:
<a href="@request.getHeader("referer")">Cancel</a>
in questo modo, non è necessario passare qualsiasi informazione in più per i modelli. (Testato con il gioco 2.3.4)
Il modo più semplice che ho trovato per fare questo, è all'interno del tuo metodo di controllo, utilizzare questo:
String refererUrl = request().getHeader("referer");
Quindi, devi fare qualcosa di simile:
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)));
}
Ricordare che è necessario eseguire un reindirizzamento() e NON un rendering() con un messaggio flash.
- 1. JSF reindirizzamento alla pagina precedente
- 2. Laravel 5 - Dopo il login reindirizzare alla pagina precedente
- 3. Rails reindirizza alla pagina precedente (indietro) dopo l'eliminazione
- 4. django, tornare alla pagina precedente dopo il modulo POST inviare
- 5. Restituisce l'utente alla pagina precedente dopo il login (Rails)
- 6. Come funziona Symfony2 reindirizzamento alla pagina richiesta dopo il login
- 7. Best practice per garantire il ritorno alla pagina precedente dopo la registrazione link url
- 8. Come tornare alla pagina di reindirizzamento dopo l'accesso (codeigniter)?
- 9. Come inviare dati variabili quando si reindirizza alla pagina precedente
- 10. Come posso reindirizzare alla pagina precedente in zend framework 2?
- 11. window.opener null dopo il reindirizzamento?
- 12. Il controller Spring-MVC reindirizza alla pagina "precedente"?
- 13. Perché la pagina si sposta dopo il reindirizzamento?
- 14. Pagina di reindirizzamento dopo il login nel framework Yii
- 15. Reindirizzamento alla pagina di errore in Angularjs
- 16. Codeigniter Controller tornare alla pagina precedente
- 17. Accesso Phantomjs, reindirizzamento e rendering pagina dopo pagina Caricamento terminato
- 18. Reindirizzamento dopo HttpSession timeout
- 19. Autenticazione moduli: disabilitare il reindirizzamento alla pagina di login
- 20. Reindirizzamento di sicurezza Spring dopo il login
- 21. tornare alla posizione precedente dopo il comando 'cd'?
- 22. come può una pagina reindirizzare gli utenti alla pagina precedente se provano ad accedere alla pagina tramite url?
- 23. Reindirizzamento URL previsto + reindirizzamento predefinito dopo l'accesso?
- 24. reindirizzamento per tornare url dopo il login
- 25. Logout di Django (reindirizzamento alla pagina iniziale) .. Elimina cookie?
- 26. django - passaggio di informazioni durante il reindirizzamento dopo il POST
- 27. Come reindirizzare alla pagina precedente in Ruby On Rails?
- 28. Come reindirizzare alla pagina precedente in Django dopo la richiesta POST
- 29. Reindirizzare alla pagina che contiene il segno # (cancelletto) dopo il login
- 30. SdkUtility.LaunchSignInPage non reindirizzamento alla pagina di accesso ebay
stai cercando qualcosa di meglio che recuperare il referer tramite request.getHeader e archiviarlo in flash o in sessione? Sarei interessato a conoscere anche i modi migliori. Aggiornamento: appena realizzato hai chiesto informazioni su scala. –
@alihaider Ho incollato la soluzione che ho usato sotto, ma forse usare il referrer sarebbe stato meglio? –
Vedere anche http://stackoverflow.com/questions/14891988/redirect-to-referer-after-a-post-request –