我已经扩展了GlobalSettings类,如教程应用程序全局设置中所示。
然后我如何访问这个类的实例,比如说从一个视图方法?我假设在应用程序启动时创建了一个实例,并且它可能是某个对象的成员。
例如,我希望在这里找到它:
Play.application().getGlobalSettings()
或类似的东西,但我在 Play.* 层次结构中的任何地方都找不到它。
有任何想法吗?谢谢。
我已经扩展了GlobalSettings类,如教程应用程序全局设置中所示。
然后我如何访问这个类的实例,比如说从一个视图方法?我假设在应用程序启动时创建了一个实例,并且它可能是某个对象的成员。
例如,我希望在这里找到它:
Play.application().getGlobalSettings()
或类似的东西,但我在 Play.* 层次结构中的任何地方都找不到它。
有任何想法吗?谢谢。
我是 Play 2.0 的新手,但是,我认为使用插件注入会更好地为您服务。看一下这个:
https://github.com/typesafehub/play-plugins/tree/master/inject
使用这种方法,您只需将以下行添加到您的控制器(以及其他一些配置,如上面的链接中所述):
@Inject static MyStaticObj obj;
其余的都是使用注入框架自动完成的。无需担心全局等。
也就是说,和你一样,在发现插件注入框架之前,我花了很多时间试图弄清楚如何使用 GlobalSettings 对象。
我的感觉是,鉴于 Global 的实现方式(作为默认/未命名包中的类),不可能在应用程序代码的任何地方引用它。我不确定这是有意为之还是偶然的(似乎 Play 的人最近在考虑 Scala 很多......)。幸运的是,插件方法似乎是处理这些共享全局变量的更好方法。
只需直接引用 Global 对象。例如不要写:
public class Global extends GlobalSettings {}
写
object Global extends GlobalSettings {}
或者
object Global extends Global {}
class Global extends GlobalSettings {}
并且您可以在代码中的任何位置引用 Global 对象,只需编写:
Global.someMethod()