응용 프로그램 시작시 인스턴스화되는 객체를 선언했습니다. 플러그인의 일부인 컨트롤러 내부에서 액세스하려고합니다. 그 플러그인을 사용할 수 있기를 원하지만, 첫 번째 부분을 지나갈 수는 없습니다 - MyWebsocketConnection
개체를 찾습니다. 모든 예제에서는이를 수행하는 방법을 보여주지 않습니다. 플러그인을 쓰고 있기 때문에 컨트롤러에 삽입하고 싶지 않습니다. (나는 어딘가에서 그것을하는 정적 인 예를 보았습니다.) 응용 프로그램을 플러그인 재생! 2.0 스칼라 - 전역 객체 액세스
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