3

在玩!2.0,可以Global按照此处记录的方式使用。Global需要在默认(空)包中。

我的应用程序中还需要全局变量,其中一些需要可用于Global. 因此,我将它们放在 Global.scala 中,如下所示:

package object globals {
  lazy val foo = Play.maybeApplication.flatMap(_.configuration.getString("foo")).getOrElse("default_value_of_foo")
}

然后我在我的控制器中使用它,如下所示:

globals.foo

有没有更好的办法?

4

2 回答 2

1

我认为这个问题更多的是关于一般软件设计,而不是关于 Play Framework。如果你真的需要一堆随机属性,为什么不创建自己的对象呢?

object Configuration {
    val timeout = Play.maybeApplication.flatMap(
                      _.configuration.getString("timeout")
                      ).getOrElse(0))
}

但通常这些值属于正在配置的某个其他逻辑实体。

于 2012-09-30T10:54:55.360 回答
0

我在使用 Global 作为我的应用程序的单例时遇到了问题。我认为从控制器访问单例也会遇到一些问题(请参阅这篇文章)。

但是您可以在其中一个包中创建自己的单例,并按照您的计划访问它。

于 2012-06-20T14:41:32.117 回答