Runar Halse
Runar Halse

Reputation: 3558

Using javascript routes in Play Framework 2

I'm attempting to make ajax calls using jsRoutes in play framework. It works fine for requests that does not take any parameters, but when I try to call a controller method which takes a Long as a param, it fails with no error message. Here's some code to explain it better.

Controller class Users.java:

public static Result addToShortList(long id) {
 return whatever
}

conf/routes

POST    /shortList/:userId  controllers.Users.addToShortList(userId: Long)

In Application.java controller file i return the jsRoutes like this:

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()));
}

Now in my javascript I can use the jsRoutes by doing the following:

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);             
            }
        });

It seems that the this functionality of the play framework is poorly documented, or maybe I'm just blind not to find it anywhere...

Thanks for any help!

Upvotes: 8

Views: 4380

Answers (1)

Runar Halse
Runar Halse

Reputation: 3558

Ok, figured the problem out myself. The problem seemed to be that I used long(primitive) in the controller method. Why this is a problem I do not know.

Upvotes: 5

Related Questions