8

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のこの機能は十分に文書化されていないようです。あるいは、どこにも見つからないのは盲目なのかもしれません...

助けてくれてありがとう!

4

1 に答える 1

5

わかりました、自分で問題を理解しました。問題は、コントローラーメソッドでlong(プリミティブ)を使用したことのようです。なぜこれが問題なのか私にはわかりません。

于 2012-09-17T11:59:38.407 に答える