【问题标题】:Using application.conf properties in views Play Scala在视图中使用 application.conf 属性 Play Scala
【发布时间】:2019-02-11 21:56:18
【问题描述】:

我有一个链接可以在我的应用程序的一个视图中打开一个网站,我需要该网站依赖于 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"

任何帮助将不胜感激。

【问题讨论】:

标签: html scala playframework


【解决方案1】:

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

@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>

【讨论】:

  • 感谢您的帮助,无法解决以下错误:Ok(views.html.baz(config)) Getting a type mismatch on config。 “预期:字符串变为实际:配置。
  • 播放版本 2.6.1
  • 你的视图有这样的参数吗? @(config:play.api.Configuration)我这里有一个项目,其中包含 scala 2.12.6 和 Play 2.6,代码正在编译。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    以下适用于 Play 2.7.x

    选项 1:使用 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 
     .....
     }
    

    选项 2:无 DI

    import play.api.Configuration
    .... other imports ...
    
    class MyActor() extends Actor {
     val config = new Configuration(ConfigFactory.load("application.conf"))
     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 
     .....
     }
    

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2016-11-10
      • 2017-09-10
      • 1970-01-01
      • 2018-04-28
      • 2016-10-08
      • 2013-01-14
      • 1970-01-01
      相关资源
      最近更新 更多