Documentation
Play ルーターは、クライアント側で実行されている Javascript からアプリケーションに戻るルーティングを処理する Javascript コードを生成することが可能です。 Javascript ルーターは、アプリケーションのリファクタリングを支援します。 URL やパラメーター名の構造を変更すると、Javascript が自動的に更新され、新しい構造を使用します。
§Javascript ルーターの生成
Play の Javascript ルーターを使用する最初のステップは、それを生成することです。 ルーターは、明示的に宣言したルートのみを公開するため、Javascript コードのサイズを最小化できます。
Javascript ルーターを生成する方法は 2 つあります。 1 つは、テンプレート ディレクティブを使用して HTML ページにルーターを埋め込む方法です。
§埋め込みルーター
埋め込みルーターは、Twirl テンプレート内の @javascriptRouter
ディレクティブを使用して生成することができます。
@()(implicit request: play.mvc.Http.Request)@helper.javascriptRouter("jsRoutes")( routes.javascript.Users.list, routes.javascript.Users.get)
最初のパラメーターは、ルーターが配置されるグローバル変数の名前です。
§ルーター・リソース
ルーター・リソースは、ルーター・ジェネレーターを呼び出すアクションを作成することにより生成することができます。 これは、テンプレートにルーターを埋め込むのと同様の構文です:
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);}
次に、対応するルートを追加します:
GET /javascriptRoutes controllers.Application.javascriptRoutes(request: Request)
このアクションを実装し、それをルート ファイルに追加すると、テンプレートにリソースとして含めることが可能になります。
<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>
§ルーターの使用
例として jQuery を使用すると、次のように簡単に呼び出すことができます:
$.ajax(jsRoutes.controllers.Users.get(someId)) .done( /*...*/ ) .fail( /*...*/ );
ルーターは、url
や type
(HTTP メソッド) などのいくつかのプロパティも使用できるようにします。 たとえば、上記の jQuery の ajax 関数の呼び出しは、次のように行うこともできます:
var r = jsRoutes.controllers.Users.get(someId);$.ajax({url: r.url, type: r.type, success: /*...*/, error: /*...*/ });
成功、エラー、コンテキストなど、他のプロパティの設定が必要な場合は、上記の方法が必要になります。 Websocket 接続は次のように行うことができます:
var r = jsRoutes.controllers.Users.list();var ws = new WebSocket(r.webSocketURL());ws.onmessage = function(msg) { /*...*/};
§jQuery ajax method support
Note: jQuery の ajax 関数の組み込みサポートは、将来のリリースで削除される予定です。 組み込みサポートに関するこのセクションは、参考のためにのみ提供されます。 新しいコードでルーターの ajax 関数を使用せず、既存のコードをできるだけ早くアップグレードすることを検討してください。 ルーターの使用に関する前のセクションでは、jQuery をどのように使用すべきかを説明しています。
jQuery が苦手な場合、または jQuery ajax メソッドを何らかの方法で装飾したい場合、ajax クエリーを実行するために使用する関数をルーターに提供することができます。 この関数は、ajax
ルーター メソッドに渡されたオブジェクトを受け入れ、ルーターが type
および url
プロパティをルーター リクエストに適したメソッドと URL に設定したことを期待する必要があります。
この関数を定義するには、アクションで ajaxMethod
メソッド パラメータを渡します。 組み込みルーティング DSL