このジョブではjavascriptRoutes
、routes.conf に基づいて正しい JS パスを生成するため、使用する必要があります。使用例は Zentaskサンプルにあります
url
とにかく、今のところ、に変更することでAJAX呼び出しを修正できます
url : '@routes.Application.saveDefaultPhoneForUser()',
この方法では、JS 全体をテンプレートに配置する必要がありますが、これは間違っています。別の JS ファイルに移動することもできますし、移動する必要があります。これを可能にするには、javascriptRoutes を使用する必要があります。
もっと...
javascriptRoutesは公式ドキュメントにはまだ記載されていませんが、ここでは順を追って紹介します。一見洗練された記述に見えますが、この方法を使用すると多くの利点が得られます。
1. 共通ルートを作成する
conf/routes
まず、ファイルに共通ルートを作成する必要があります。
GET /item/:id controllers.Application.getItem(id: Long)
POST /item/new controllers.Application.newItem
PUT /item/:id controllers.Application.updateItem(id: Long)
もちろん、Application
コントローラーで少なくとも次の 3 つのアクションを作成する必要があります。
getItem(Long id){ ... }
newItem() { ... }
updateItem(Long id) { ... }
2. 共通ルートを JS に変換するアクションを作成する
- どこかに置きます。あなたの
Application
コントローラーで
- 呼びましょう
javascriptRoutes()
そのアクションでは、ファイルから既存のルートを指定しますconf/routes
public static Result javascriptRoutes() {
response().setContentType("text/javascript");
return ok(
Routes.javascriptRouter("myJsRoutes",
routes.javascript.Application.getItem(),
routes.javascript.Application.newItem(),
routes.javascript.Application.updateItem(),
//inside somepackage
controllers.somepackage.routes.javascript.Application.updateItem()
)
);
}
注:括弧内にパラメーターを設定しないでください。
3.javascriptRoutes
アクションのルートを作成し、それをテンプレートに含めます
ルートconf/routes
GET /javascriptRoutes controllers.Application.javascriptRoutes
<head>
一部で見る/views/main.scala.html
<script type="text/javascript" src='@routes.Application.javascriptRoutes()'></script>
4.必要な場所でjavascriptRoutesを使用します
これからは、JS でルートを使用して、url
とを指定しなくても正しいパスを取得できますtype
。代わりの例:
$('.getAjaxForThisContainer').click(function(e) {
var idToGet = $("#someField").val();
$.ajax({
type : 'GET',
url : '@routes.Application.getItem()',
data : {
id: idToGet
},
success : function(data) {
// ... some code on success
}
});
return false;
});
簡易版を使用できます(myJsRoutes
ポイント2から):
myJsRoutes.controllers.Application.getItem(idToGet).ajax({
success : function(data) { ... some code ... }
});
また
myJsRoutes.controllers.Application.newItem().ajax({
success : function(data) { ... some code ... }
});
等...
- 指定する必要はありません- JS ルーターはルール
type: "POST"
に従って正しいメソッドを使用しますconf/routes
- 純粋な JS の構文を使用し
id
て、レコード (または他のパラメーター) をGET
or PUT
(または他のメソッド)に設定できます。routes-like
- ルート ルールに必要なすべてのパラメーターが含まれている場合は、JS を本当に最小化できます。
ルート:
GET /some/:a/:b/:c controllers.Application.getABC(a: String, b: Integer, c: String)
JS:
myJsRoutes.controllers.Application.getABC("a", 1, "b" ).ajax({});