Play 2.4 scala我在获取代码中隐含的消息时面临问题

Play 2.4 scala我在获取代码中隐含的消息时面临问题,scala,playframework,inject,playframework-2.4,Scala,Playframework,Inject,Playframework 2.4,我正在尝试将我的应用程序从2.3迁移到2.4。 在我们的代码库中,我们已经广泛使用了消息,因此任何删除消息的方法都会有所帮助。 目前我们的代码是这样的 class MyController @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport{ def methodA() = { new MyControllerService.doSomething() }

我正在尝试将我的应用程序从2.3迁移到2.4。 在我们的代码库中,我们已经广泛使用了消息,因此任何删除消息的方法都会有所帮助。 目前我们的代码是这样的

class MyController @Inject() 
(val messagesApi: MessagesApi) extends  Controller  with I18nSupport{

    def methodA() = {
        new MyControllerService.doSomething()
    }
}

class MyControllerService{
    def doSomething()(implicit messages:Messages){
        messages(any_key)
    }
}
编译此代码时,我收到错误:(31,84)Play 2编译器:找不到参数消息的隐式值:Play.api.i18n.messages编译时错误消息

请帮助解决此问题,我们欢迎您提出任何以更好方式改进此类问题的建议。

请按以下方式执行:

class MyController @Inject() 
(val messagesApi: MessagesApi) extends  Controller  with I18nSupport{

    def methodA() = { request =>
        implicit val messages = messageApi.prefered(request)
        new MyControllerService.doSomething()
    }
}

class MyControllerService{
    def doSomething()(implicit messages:Messages){
        messages(any_key)
    }
}
或者,您可以通过以下方式直接传递创建的消息对象:

new MyControllerService.doSomething()(messages)
这样做:

class MyController @Inject() 
(val messagesApi: MessagesApi) extends  Controller  with I18nSupport{

    def methodA() = { request =>
        implicit val messages = messageApi.prefered(request)
        new MyControllerService.doSomething()
    }
}

class MyControllerService{
    def doSomething()(implicit messages:Messages){
        messages(any_key)
    }
}
或者,您可以通过以下方式直接传递创建的消息对象:

new MyControllerService.doSomething()(messages)

您的操作和“注入”的导入中需要有一个隐式请求,如下所示:

此外,您需要在build.sbt中启用注入路由器:

routesGenerator := InjectedRoutesGenerator

您的操作和“注入”的导入中需要有一个隐式请求,如下所示:

此外,您需要在build.sbt中启用注入路由器:

routesGenerator := InjectedRoutesGenerator

从文档>I18nSupport特性为您提供隐式消息值,只要隐式作用域中有Lang或RequestHeader。从文档>I18nSupport特性为您提供隐式消息值,只要隐式作用域中有Lang或RequestHeader。从文档>I18nSupport特性为您提供隐式消息值只要隐式作用域中有Lang或RequestHeader,就可以使用隐式消息值。