2017-06-20 1 views
-2

Dies ist eine noob Frage für Play 2.5.Scala Post Redirect spielen Holen Sie sich Pattern - Redirect to a View

Ich habe eine einfache Aktion, die (schließlich) ein Element aus der Tabelle löscht. Diese Aktion wird von einer Route ausgelöst, die als POST definiert ist.

POST /delete/:id   @com.test.controllers.XController.delete(id: String) 

Wenn die Löschen erfolgreich ist, löst der Code derzeit auf einen Blick ‚Erfolg‘ genannt (intern eine success.scala.html mit einem benutzerdefinierten Nachrichtenparameter und auf optional Objekt).

Der Benutzer kann jedoch versuchen, F5 zu drücken, um die Seite zu aktualisieren und das Formular erneut zu senden. Um dies zu vermeiden, besteht eine Möglichkeit darin, in die Ansicht "Erfolg" umzuleiten.

Ich kann nicht, für die Liebe Gottes, herausfinden, wie zu dieser Ansicht Umleiten. Es scheint, dass Sie nur über eine umgekehrte Route umleiten oder URLs verwenden können.

+2

Haben Sie versucht: 'Future.successful (Redirect (newUrl))'? –

+0

Entschuldigung für die späte Antwort. Wie gesagt, das ist eine Option, die ich nicht nehmen wollte. – Serendipity

Antwort

1

Erster Ansatz, wenn Sie benötigen Formen spielen (link on spec): Sie können Parameter direkt übergeben:

val df = form().bindFromRequest() 
return redirect(routes.Application.somePlace(df.get("action"), 
df.get("id"))) 

Wenn Sie Scala Formulare nicht benötigen, können Sie machen redirect über Redirect:

GET /hello/:name   controllers.Application.hello(name) 
// Redirect to /hello/Bob 
def helloBob = Action { 
    Redirect(routes.Application.hello("Bob"))  
} 
+0

Entschuldigung für die Verzögerung. Ich habe eine Sicht namens "Erfolg", die Parameter nimmt. Es erscheint nicht auf "Routen", da es keine Route ist. Eine URL zu haben, würde bedeuten, dass ich herausfinden müsste, was die URL für den "Erfolg" ist. – Serendipity

+0

Wenn Sie möchten, die Umleitung auf Form Handler versuchen etwas wie folgt: 'userData => {Redirect (routes.Application.home (models.User.create (newUser)))}' –