简体   繁体   English

如何从Play Framework 2.5.X调用Java方法

[英]How to call Java method from Play Framework 2.5.X

  1. I have a JavaScript file morris.js and I have to call some Java methods to retrieve a map or list result. 我有一个JavaScript文件morris.js ,我必须调用一些Java方法来检索maplist结果。 I can't use reverserouting or controllers methods because I must return Result type within the controllers. 我不能使用反向路由或控制器方法,因为我必须在控制器内返回Result类型。

    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: 如何将其添加到JavaScript路由器中:

     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? 有什么帮助吗?

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 就是这样,我们没有在反向JS路由中配置ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM