我在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)")
答案 0 :(得分:0)
生成要在JavaScript代码中使用的网址的最佳方式(也是推荐的方法)是使用JavaScript Routing。遗憾的是,没有Java版本的文档,至少在2.4.x文档中没有(这是solved for version 2.5)。
这是你必须做的。
在某个控制器中声明一个暴露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路由。
此处的优点是您可以在视图中以及其他.js
文件中使用JavaScript路由器。为此,请在您的Javascript代码中执行以下操作:
var webSocketUrl = jsRoutes.controllers.Application.aMethod("/some/parameter").webSocketURL()
var myWs = new WS(webSocketUrl)