繁体   English   中英

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

[英]How do I specify method parameter in @route in play framework?

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

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

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

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

但是如何在JavaScript中使用例如path =“ someValue”指定URL?

我试过例如:

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)")

生成要在JavaScript代码中使用的URL的最佳方法(也是推荐的方法)是使用JavaScript Routing 不幸的是,没有Java版本的文档,至少在2.4.x文档中没有(这是针对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)

暂无
暂无

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

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