Scala 获取播放应用程序的基本url

Scala 获取播放应用程序的基本url,scala,playframework,playframework-2.2,Scala,Playframework,Playframework 2.2,我想获取应用程序的当前基本url,该应用程序通常http://localhost:9000/在本地主机和http://mydomain.com在服务器上。如果将来我可能会开始使用https 我怎样才能做到这一点?您使用的是什么版本的Play Framework 如果您使用的是Play 1.x,则应使用application.conf变量手动指定应用程序的基本url。这是我为我的应用程序检索基本url的方式。例如: application.baseUrl=http://localhost:9000

我想获取应用程序的当前基本url,该应用程序通常
http://localhost:9000/
在本地主机和
http://mydomain.com
在服务器上。如果将来我可能会开始使用https


我怎样才能做到这一点?

您使用的是什么版本的Play Framework

如果您使用的是Play 1.x,则应使用application.conf变量手动指定应用程序的基本url。这是我为我的应用程序检索基本url的方式。例如:

application.baseUrl=http://localhost:9000
%devcloud.application.baseUrl=http://dev-url.com
%prod.application.baseUrl=http://prod-url.com
使用Play Framework 2.x,您可以使用其他配置文件(因此变量值取决于环境-prod、dev、test…),如下所述:


这些解决方案特别适用于不想依赖某个操作或控制器的情况。否则,您可以使用操作中的请求检索绝对URL。

然后尝试获取baseUrl:
play.play.application().configuration().getString(“application.baseUrl”)
当前
play.play.application().configuration().getString(“application.baseUrl”)在最新版本中已去除润滑脂。下面是解决这个问题的最新方法:

首先将配置注入类:

   @Inject
    Configuration configuration;
然后像这样使用它:

String baseUrl = configuration.getString("application.baseUrl");

你读过答案吗?@Artsiom,正如预期的那样,
Router.getFullUrl(“Controller.action”)
-没有这样的方法,
routes.MyController.myMethod().absoluteURL(request())-相同。@Artsiom,但我不想引用控制器和操作来获取基本Url,因为它们可能会发生更改。但我也不想依赖某个端口,因为它碰巧也可以工作。然后,您还必须为该端口添加配置变量。更改应用程序的运行端口(即使在开发模式下这并不重要)或协议(http或https)不是一个次要的决定,因此处理一个或两个变量并不是那么糟糕;)然后,当应用程序在不同于9000的端口上运行时,我必须始终更改它。我不想依赖它碰巧运行的端口。我希望它是自动的。