在视图中使用application.conf属性播放Scala

时间:2018-09-06 15:21:33

标签: html scala playframework

我有一个链接可以在我的应用程序中的其中一个视图中打开网站,并且该网站必须依赖于application.conf中设置的网站。

立即查看:

class =“ nav-link” href =“ https://my.website.com” target =“ _ blank”>

这不起作用:

class =“ nav-link” href = current.configuration.getString(“ client.server.url”)target =“ _ blank”>

application.conf:

client.server.url =“ https://my.website.com

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

要在“播放模板”中使用配置,您需要将其注入到Controller中,然后通过其构造函数将其提供给视图。

@Singleton
class FooController @Inject()(config:Configuration, cc: ControllerComponents) extends AbstractController(cc) {

  def bar = Action {
    Ok(views.html.baz(config))
  }

}

然后查看baz.scala.html

@(config:play.api.Configuration)

<a class="nav-link" href="@config.getString("client.server.url")" target="_blank">LINK</a>

答案 1 :(得分:0)

我使用例如@{play.Play.application.configuration.getString("play.http.context")},但在2.6版中可能已弃用。只需将play.http.context与您的配置参数交换即可。

答案 2 :(得分:0)

有多种方法可以使用Scala在Play中访问配置

以下内容适用于Play 2.7.x

选项1:带有DI

mat.otherControls = {'right':True, 'left':False}
# or if you want only one of the keys
mat.otherControls['right'] = False

选项2:不带DI

import play.api.Configuration
.... other imports ...

class MyActor @Inject()(config: Configuration) extends Actor  {
 println(config.get[String]("akka_actor_custom_dispatcher"))
 println(config.get[String]("akka_actor_custom_dispatcher")) // w/o optional
 println(config.getOptional[Int]("value_1").getOrElse(2))    // with optional 
 .....
 }