He declarado un objeto que se crea una instancia en el inicio de la aplicación. Quiero acceder a él dentro de un controlador, que es parte de un complemento. Quiero poder usar ese complemento, pero parece que no puedo pasar de la primera parte, encontrar el objeto MyWebsocketConnection
. Ninguno de los ejemplos muestra cómo hacer esto. No quiero inyectar en el controlador porque estoy escribiendo un complemento (vi ejemplos estáticos de cómo hacerlo en algún lugar).¡Juego! 2.0 Scala - Acceso al objeto global
Global.scala
, plugin de aplicación \ app \ 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...");
}
}
Mi costumbre controlador de registro plugin:
MyLogger.Scala
, plugin de controladores de aplicación \ app \ \ MyLogger.scala
object MyLogger {
def info(message: String) = {
// THIS CAN'T BE FOUND ?
// MyWebsocketConnection.logger.send(message)
}
}
Por lo tanto, desde el juego! 2.0 aplicación que hace referencia al complemento, probablemente haría algo como lo siguiente, pero ni siquiera puedo pasar la parte anterior:
MyFutureController.scala
, otra Play! App \ controladores de programa \ \ MyFutureController.scala
object MyFutureController extends Controller {
def someRandomMethod = Action {
// Custom logging
MyLogger.info("Here's my log message!");
Ok("This documentation stinks!")
}
}
Esta es la mejor respuesta. – vaughan
El valor predeterminado es 'application.global = ...'. Tienes razón, debería ser 'global = ...' sin la 'aplicación'. – samwize