Я объявил объект, который создается при запуске приложения. Я хочу получить доступ к нему внутри контроллера, который является частью плагина. Я хочу, чтобы иметь возможность использовать этот плагин, но я не могу пройти мимо первой части - найти объект MyWebsocketConnection
. Ни один из примеров не показывает, как это сделать. Я не хочу вводить в контроллер, потому что я пишу плагин (я видел статические примеры того, как это сделать где-то).Играйте! 2.0 Scala - Доступ к глобальному объекту
Global.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
, плагин приложения \ приложение \ контроллерах \ MyLogger.scala
object MyLogger {
def info(message: String) = {
// THIS CAN'T BE FOUND ?
// MyWebsocketConnection.logger.send(message)
}
}
Итак, из Play! 2.0, которое ссылается на плагин, я бы (возможно) сделал что-то вроде ниже, но я не могу даже пройти мимо части:
MyFutureController.scala
, еще один Play! Приложение \ APP \ Контроллеры \ 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 = ...'. Вы правы, это должно быть 'global = ...' без 'приложения'. – samwize