私は、アプリケーションの開始時にインスタンス化されるオブジェクトを宣言しました。私はプラグインの一部であるコントローラの中でそれにアクセスしたい。私はそのプラグインを使用できるようにしたいが、最初の部分を過ぎているとは思わない - MyWebsocketConnection
オブジェクトを見つける。これを行う方法の例はありません。私はプラグインを書いているので、私はコントローラに注入したくない(私はどこかでそれを行う方法の静的な例を見た)。アプリケーションのプラグイン 再生! 2.0 Scala - グローバルオブジェクトへのアクセス
Global.scala
object Global extends GlobalSettings {
object MyWebsocketConnection {
val logger = // return something that gets instantiated once, like websocket object for logging to ui
}
class MyWebsocketConnection {
import MyWebsocketConnection.logger
}
override def onStart(app: Application) {
Logger.info("Application has started...");
}
}
マイカスタムログプラグインコントローラ:アプリケーション\アプリの\コントローラ\ MyLogger.scala
object MyLogger {
def info(message: String) = {
// THIS CAN'T BE FOUND ?
// MyWebsocketConnection.logger.send(message)
}
}
プラグイン
MyLogger.Scala
、だから、プレイから!プラグインを参照している2.0アプリでは、私は(おそらく)以下のようなことをしますが、前にこの部分を過ぎて行くことはできません:
MyFutureController.scala
、別のプレイ!アプリケーションの\アプリケーション\コントローラは、問題があなたのGlobal
オブジェクトがデフォルトのパッケージに存在することであるMyFutureController.scala
object MyFutureController extends Controller {
def someRandomMethod = Action {
// Custom logging
MyLogger.info("Here's my log message!");
Ok("This documentation stinks!")
}
}
これは最良の答えです。 – vaughan
デフォルトは 'application.global = ...'です。あなたは 'application 'なしで' global = ... 'にすべきです。 – samwize