Play 框架:访问和操作全局变量

Bla*_*... 4 scala playframework-2.2

我目前正在构建一个会计应用程序,现在我想保留这个可变的“期间结束日期”。我相信我们可以使用全局变量,但是我不知道该怎么做。到目前为止我尝试过的是在application.conf这样的application.date="2014/12/15".

此外,我不确定如何使用上述方法更改值。这个问题有什么好的方法吗?

And*_*ann 5

一种可能的方法去是使用Singeleton对象这是在初始化Global.scala

全局对象必须进入应用程序的 scala-root 或通过application.conf.

共享数据的单例

in app/shared/Shared.scala(名字是免费的)

package shared

object Shared {
 private var data: Int = 0

 def setData(d: Int) : Unit = data = 0 
 def getData : Int = data
}
Run Code Online (Sandbox Code Playgroud)

application.conf你可以设置全局上应用程序的启动被称为(你也可以只是把一个名为Global.scala中的应用程序,将默认使用)

application.global= settings.Global
shared.initial = 42
Run Code Online (Sandbox Code Playgroud)

app/settings/Global.scala

object Global extends GlobalSettings {
  override def onStart(app: Application) {
   // Here I use typesafe config to get config data out of application conf
   val cfg: Config = ConfigFactory.load()
   val initialValue = cfg.getInt(shared.initial)
   // set initial value for shared
   Shared.setData(initialValue)
  }
}
Run Code Online (Sandbox Code Playgroud)

在 Play 代码中获取或设置共享数据。

import shared.Shared

Shared.getData
Shared.setData( 8 )
Run Code Online (Sandbox Code Playgroud)