8

チュートリアルApplication global settingsに示されているように、 GlobalSettingsクラスを拡張しました。

このクラスのインスタンスにアクセスするにはどうすればよいでしょうか。ビュー メソッドからとしましょう。アプリケーションの開始時に 1 つのインスタンスが作成され、おそらく何らかのオブジェクトのメンバーであると想定しています。

たとえば、ここで見つけることを期待していました:

Play.application().getGlobalSettings()

または似たようなものですが、Play.* 階層のどこにも見つかりませんでした。

何か案は?ありがとう。

4

2 に答える 2

5

私は Play 2.0 を初めて使用しますが、プラグイン インジェクションを使用したほうがよいと思います。これをチェックしてください:

https://github.com/typesafehub/play-plugins/tree/master/inject

このアプローチを使用すると、次の行をコントローラー (および上記のリンクに記載されている他の構成) に追加するだけです。

@Inject static MyStaticObj obj;

あとはすべて、インジェクション フレームワークを使用して自動的に行われます。グローバルなどを心配する必要はありません。

そうは言っても、あなたと同じように、プラグイン インジェクション フレームワークを発見する前に、これに GlobalSettings オブジェクトを使用する方法を理解しようと多くの時間を費やしました。

Global がどのように実装されているか (default/unnamed パッケージのクラスとして) を考えると、アプリケーション コードのどこからでも Global を参照することはできないというのが私の感覚です。これが設計によるものなのか偶然によるものなのかはわかりません (Play 関係者は最近 Scala についてかなり考えているようです...)。幸いなことに、プラグイン アプローチは、これらの共有グローバルを処理するためのより良い方法のようです。

于 2012-04-24T01:02:52.867 に答える
-3

Global オブジェクトを直接参照するだけです。たとえば、次のように記述しないでください。

public class Global extends GlobalSettings {}

書きます

object Global extends GlobalSettings {}

また

object Global extends Global {}
class Global extends GlobalSettings {}

そして、コード内のどこでもグローバルオブジェクトを参照できるよりも、次のように書くだけです:

Global.someMethod()
于 2012-04-20T06:53:42.200 に答える