PlayFrameworkでjsRoutesを使用してajax呼び出しを行おうとしています。パラメータをとらないリクエストでは正常に機能しますが、パラメータとしてLongをとるコントローラメソッドを呼び出そうとすると、エラーメッセージなしで失敗します。これをよりよく説明するためのコードがいくつかあります。
コントローラクラスUsers.java:
public static Result addToShortList(long id) {
return whatever
}
conf /routes
POST /shortList/:userId controllers.Users.addToShortList(userId: Long)
Application.javaコントローラーファイルで、次のようにjsRoutesを返します。
public static Result javascriptRoutes() {
response().setContentType("text/javascript");
return ok(Routes.javascriptRouter("jsRoutes",
controllers.routes.javascript.Application.frontpage(),
...
controllers.routes.javascript.Users.addToShortList(),
controllers.routes.javascript.Users.removeFromShortList()));
}
これで、JavaScriptで、次のようにしてjsRoutesを使用できます。
jsRoutes.controllers.Users.addToShortList(id).ajax({
success : function(data) {
alert(data);
},
error : function(err) {
//code always ends up here, with the err giving no eerror message at all!
alert(err);
}
});
Play Frameworkのこの機能は十分に文書化されていないようです。あるいは、どこにも見つからないのは盲目なのかもしれません...
助けてくれてありがとう!