Javascript路由在播放框架无法正常工作

时间:2016-08-22 11:59:37

标签: scala playframework-2.0

当我使用Play Framework的 Javascript Routing 时,我的应用程序中出现了一个奇怪的问题。这就是问题所在:

Screenshot

这是我的代码:

    class Application extends Controller {

      import play.api.mvc._
      import play.api.routing._

      def javascriptRoutes = Action { implicit request =>
        Ok(
          JavaScriptReverseRouter("jsRoutes")(routes.javascript.ProcessController.retrieveAllProcess)
        ).as("text/javascript")
      }
    }

这是muy路线文件:

    GET  /javascriptRoutes  controllers.Application.javascriptRoutes
    GET /Process/All        controllers.ProcessController.retrieveAllProcess

这是html.scala文件:

    var option =
        {   "url" : @routes.javascript.ProcessController.retrieveAllProcess,
         ...
       }

非常感谢你:)。

1 个答案:

答案 0 :(得分:1)

我认为你将javascript路由与反向路由混淆。

Javascript路由

Javascript路由旨在生成javascript代码。生成的代码定义了可以在javascript中用于在客户端生成URL的函数。由于您已定义了一个返回生成代码的Action,因此您可以使用

将其包含在页面中
<script type="text/javascript" src="@routes.Application.retrieveAllProcess()"></script>

请注意,这使用反向路由来告诉html页面应该将哪个URL用于脚本。 :)

然后在您的javascript代码中可以像这样使用

var retrieveAllProcessRoute = jsRoutes.controllers.Application.retrieveAllProcess()

生成包含HTTP动词和Application::retrieveAllProcess方法网址的javascript对象。

反向路由

反向路由用于生成scala代码。此代码用于生成视图中的URL或Redirects到服务器端的控制器方法。

由于您正在谈论模板(*.html.scala),所以您在讨论服务器方面的问题。这意味着您应该使用Play的反向路由功能。下面我重写了您的javascript模板代码段以使用反向路由:

var option = {
  "url": @routes.Application.retrieveAllProcess,
  ...
}