如何在play框架中的@route中指定方法参数?

时间:2016-02-26 14:34:15

标签: javascript playframework routes

我在conf / routes中有以下定义:

GET     /amethod/*path                controllers.Application.amethod(path: String)

以及Application.java中的以下内容:

public static WebSocket<String> amethod(String path){
....
}

但如何在JavaScript中指定网址,例如path =“someValue”?

我试过了,例如:

new WS("@routes.Application.amethod(\"someValue\").webSocketURL(request)")
new WS("@routes.Application.amethod('someValue').webSocketURL(request)")

但它只适用于path = null:

new WS("@routes.Application.amethod(null).webSocketURL(request)")

1 个答案:

答案 0 :(得分:0)

生成要在JavaScript代码中使用的网址的最佳方式(也是推荐的方法)是使用JavaScript Routing。遗憾的是,没有Java版本的文档,至少在2.4.x文档中没有(这是solved for version 2.5)。

这是你必须做的。

JavaScript路由端点

在某个控制器中声明一个暴露Javascript路由的动作:

public static Result javascripts() {
  response().setContentType("text/javascript");
  return ok(
    Routes.javascriptRouter("jsRoutes",
      // Routes
      controllers.routes.javascript.Application.aMethod(),
      controllers.routes.javascript.Application.anotherMethod()
    )
  );
}

然后,找到上述行动的路线:

GET    /assets/javascripts/routes.js    controllers.Application.javascripts()

或您想要的任何其他路径,例如:

GET    /assets/potatoes.js    controllers.Application.javascripts()

并将此JavaScript添加到您的页面:

<script type="text/javascript" src="@routes.Application.javascripts()"></script>

就是这样。现在,让我们看看如何使用JavaScript路由。

使用JavaScript路线:

此处的优点是您可以在视图中以及其他.js文件中使用JavaScript路由器。为此,请在您的Javascript代码中执行以下操作:

 var webSocketUrl = jsRoutes.controllers.Application.aMethod("/some/parameter").webSocketURL()
 var myWs = new WS(webSocketUrl)