Play Framework: leiten Sie die controller-Methode mit Argumenten
Ich bin Aufbau einer web-Anwendung mit PLAY framework 2.2.1 und ich versuche, um alle verfügbaren http-get-query-Parameter für die angeforderte Website in der Adressleiste, auch diejenigen, die sich nicht in die Anfrage. In Fällen, In denen
nicht alle http-get-Parameter gesetzt sind, möchte ich hinzufügen, dass die undefinierten Parameter mit den default-Werten und machen eine Umleitung.
Ich habe eine Seite, die angefordert werden kann bei:
GET /test controllers.Application.test(q:String, w:String ?= null, f:String ?= null, o:String ?= null)
Hier ist die Methode, die ich möchte, in controllers.Application
:
public static Result test(String q, String w, String f, String o){
...
//In case not all parameters where set
if (reload == 1){
return redirect(controllers.Application.test(qDefault, wDefault, fDefault, oDefault));
}
else {
ok(...);
}
}
Das problem ist, dass redirect() nimmt einen String und nicht eine Ergebnis-Objekt.
Meine erste Lösung ist, um zu schreiben
return controllers.Application.test(qDefault, wDefault, fDefault, oDefault);
Aber leider die Adresszeile nicht aktualisiert.
Meine zweite Lösung ist, erstellen Sie die Zeichenfolge manuell:
return redirect("/test?q=" + query + "&f=" + f + "&w=" + w + "&o=" + showOptions);
Dies funktioniert gut, aber gibt es keine andere Möglichkeit mehr eleganten Weg, dies zu tun?
InformationsquelleAutor Matthias Munz | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
routes
Objekt :Quelle : Offizielle Dokumentation
InformationsquelleAutor Isammoc
darüber hinaus gilt dies auch
InformationsquelleAutor Sakib Sami