How to call Java method from Play Framework 2.5.X

244 Views Asked by At
  1. I have a JavaScript file morris.js and I have to call some Java methods to retrieve a map or list result. I can't use reverserouting or controllers methods because I must return Result type within the controllers.

    How can I achieve this?

    An example of the expected result:

    $.ajax(some method)
          .done(some treatment)
          .fail(console.log('not ok'));
    
    // data stolen from http://howmanyleft.co.uk/vehicle/jaguar_'e'_type
    
    var tax_data = [
       {"period": "2013", "licensed": 400, "sorned": 550},
       {"period": "2012", "licensed": 450, "sorned": 400},
       {"period": "2011", "licensed": 350, "sorned": 550},
       {"period": "2010", "licensed": 500, "sorned": 700},
       {"period": "2009", "licensed": 250, "sorned": 380},
       {"period": "2008", "licensed": 350, "sorned": 240},
       {"period": "2007", "licensed": 180, "sorned": 300},
       {"period": "2006", "licensed": 300, "sorned": 250},
       {"period": "2005", "licensed": 200, "sorned": 150}
    ];
    
  2. I have a method with a parameter in controllers. How can I add it into JavaScript router:

    public Result getYearUploadedVideos(Long userId){
        // ...
    }
    

    my router:

    public Result jsRoutes() {
        return ok(play.routing.JavaScriptReverseRouter.create("jsRoutes",
                  routes.javascript.Signup.forgotPassword(),
                  routes.javascript.AdminManagement.contact(),
                  routes.javascript.ProfilManagement.view(),
                  routes.javascript.DashboardManagement.getYearUploadedVideos()))
            .as("text/javascript");
    }
    

... but it doesn't work. Any help?

1

There are 1 best solutions below

0
On

In fact very easy :

public Result jsRoutes() {
    return ok(
            play.routing.JavaScriptReverseRouter.create("jsRoutes",
                    routes.javascript.Signup.forgotPassword(),
                    routes.javascript.DashboardManagement.getSmartCasterSharedDonutStatDataJson(),
                    routes.javascript.DashboardManagement.getSmartCasterActionStatDataJson(),
                    routes.javascript.DashboardManagement.getUploadedPublishedVideoStatDataJson(),
                    routes.javascript.DashboardManagement.getVideoSharedDonutStatDataJson(),
                    routes.javascript.DashboardManagement.getVideoActionStatDataJson()))
            .as("text/javascript");

}

then :

$.ajax(jsRoutes.controllers.DashboardManagement.getVideoSharedDonutStatDataJson(id))
    .done(function(donut){ 
        console.log(JSON.stringify(donut));
...});

that's it we do not configured ID in reverse JS routing