Dokumentace
Router pro přehrávání umí generovat kód Javascriptu pro směrování z Javascriptu běžícího na straně klienta zpět do vaší aplikace. Javascriptový směrovač pomáhá při refaktorizaci vaší aplikace. Pokud změníte strukturu adres URL nebo názvy parametrů, váš Javascript se automaticky aktualizuje tak, aby používal tuto novou strukturu.
§Generování směrovače Javascript
Prvním krokem k použití směrovače Javascript služby Play je jeho vygenerování. Směrovač vystaví pouze ty trasy, které explicitně deklarujete, čímž se minimalizuje velikost kódu Javascriptu.
Existují dva způsoby generování směrovače Javascriptu. Jedním z nich je vložení směrovače do stránky HTML pomocí direktiv šablony. Druhým je generování prostředků Javascriptu v akci, které lze stáhnout, uložit do mezipaměti a sdílet mezi stránkami.
§Vložený směrovač
Vložený směrovač lze generovat pomocí směrnice @javascriptRouter
uvnitř šablony Twirl. Obvykle se to provádí uvnitř hlavní šablony dekorace.
@()(implicit request: play.mvc.Http.Request)@helper.javascriptRouter("jsRoutes")( routes.javascript.Users.list, routes.javascript.Users.get)
Prvním parametrem je název globální proměnné, do které bude směrovač umístěn. Druhým parametrem je seznam Javascriptových tras, které mají být zahrnuty do tohoto směrovače.
§Router resource
Router resource lze vygenerovat vytvořením akce, která vyvolá generátor směrovače. Má podobnou syntaxi jako vložení směrovače do šablony:
import play.mvc.Http;import play.routing.JavaScriptReverseRouter;import play.mvc.Controller;import play.mvc.Result;
public Result javascriptRoutes(Http.Request request) { return ok(JavaScriptReverseRouter.create( "jsRoutes", "jQuery.ajax", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())) .as(Http.MimeTypes.JAVASCRIPT);}
Poté přidejte odpovídající trasu:
GET /javascriptRoutes controllers.Application.javascriptRoutes(request: Request)
Po implementaci této akce a jejím přidání do souboru routes ji pak můžete zahrnout jako zdroj do svých šablon:
<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>
§Použití směrovače
Na příkladu jQuery je provedení volání tak jednoduché jako:
$.ajax(jsRoutes.controllers.Users.get(someId)) .done( /*...*/ ) .fail( /*...*/ );
Směrovač také zpřístupňuje několik dalších vlastností včetně url
a type
(metoda HTTP). Například výše uvedené volání funkce jQuery ajax lze provést také takto:
var r = jsRoutes.controllers.Users.get(someId);$.ajax({url: r.url, type: r.type, success: /*...*/, error: /*...*/ });
Výše uvedený přístup je nutný tam, kde je třeba nastavit další vlastnosti, jako je úspěch, chyba, kontext atd.
absoluteURL
a webSocketURL
jsou metody (nikoliv vlastnosti), které vracejí kompletní url řetězec. Připojení přes Websocket lze vytvořit takto:
var r = jsRoutes.controllers.Users.list();var ws = new WebSocket(r.webSocketURL());ws.onmessage = function(msg) { /*...*/};
§podpora metody jQuery ajax
Poznámka: Vestavěná podpora funkce jQuery ajax bude v některé z budoucích verzí odstraněna. Tato část o vestavěné podpoře je uvedena pouze pro referenční účely. Nepoužívejte prosím funkci ajax směrovače v novém kódu a zvažte co nejdříve aktualizaci stávajícího kódu. Předchozí část o používání směrovače dokumentuje, jak by se měl používat jQuery.
Pokud se vám jQuery nelíbí nebo pokud byste chtěli metodu jQuery ajax nějak ozdobit, můžete směrovači poskytnout funkci, kterou bude používat k provádění dotazů ajax. Tato funkce musí přijmout objekt, který je předán metodě ajax
směrovače, a měla by očekávat, že směrovač na něm nastavil vlastnosti type
a url
na příslušnou metodu a url pro požadavek směrovače.
Chcete-li definovat tuto funkci, předejte ve své akci parametr metody ajaxMethod
, například:
JavaScriptReverseRouter.create( "jsRoutes", "myAjaxMethod", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())
Next: Vložené směrování DSL