像亞歷山大提到的,我需要在Play 2.5中使用注入。工作代碼現在看起來是這樣的:
import play.api.i18n.{Messages, I18nSupport, MessagesApi}
import play.api.mvc._
import scala.concurrent.Future
class ApplicationController @Inject()(val messagesApi:MessagesApi) extends Controller with I18nSupport{
def get = Action.async {
implicit request => Future.successful(Ok(views.html.index(Messages("title"))))
}
}
,如果你有一個測試類,你可以按照下面的邏輯,並確保您導入「play.api.i18n.Messages.Implicits._」:
import controllers.ApplicationController
import org.scalatestplus.play.{OneServerPerSuite, PlaySpec}
import play.api.i18n.{MessagesApi, Messages}
import play.api.i18n.Messages.Implicits._
import play.api.mvc.Result
import play.api.test.FakeRequest
import play.api.test.Helpers._
import scala.concurrent.Future
class ApplicationControllerSpec extends PlaySpec with OneServerPerSuite{
val applicationController = new ApplicationController(app.injector.instanceOf[MessagesApi])
"ApplicationController" must {
"load front page successfully" in {
val result: Future[Result] = applicationController.get().apply(FakeRequest())
contentAsString(result) must include(Messages("home.title"))
}
}
}
無法完成它的工作,但現在我知道玩2.4.x沒有loger使用消息,而是它使用MessagesApi。我跟着這個鏈接解決了我的問題[鏈接](http://stackoverflow.com/questions/30799988/play-2-4-form-could-not-find-implicit-value-for-parameter-messages-play- API-I) – Ramin