gpt4 book ai didi

scala - 当我注入(inject) MessageApi 并使用 I18nSupport Trait 时如何传递消息

转载 作者:行者123 更新时间:2023-12-03 23:10:41 26 4
gpt4 key购买 nike

我的 Controller 操作使用如下自定义操作:

class ActionWithContext @Inject()(....)
extends ActionBuilder[ContextAwareRequest] {

def invokeBlock[A](request: Request[A], block: (ContextAwareRequest[A]) => Future[Result]) = {
...
}

}

class ContextAwareRequest[A](val context: MyContext, request: Request[A]) extends WrappedRequest[A](request)

我的 Controller 看起来像:
import play.api.i18n.{MessagesApi, I18nSupport, Messages}
import play.api.i18n.Messages.Implicits._
class WebsiteController @Inject() (val messagesApi: MessagesApi, actionWithContext: ActionWithContext, ..)
extends BaseController with I18nSupport {


def edit(websiteId: Int) = actionWithContext { request =>
val model = ..
Ok(views.html.backend.websites.edit(model)(request.context))
}

}

View 页面如下所示:
@(form: Form[controllers.WebsiteForm])(implicit context: MyContext, m: Messages) {


}

我收到错误消息:
not enough arguments for method apply: (implicit context: com.example.services.components.MyContext, implicit m: play.api.i18n.Messages)play.twirl.api.HtmlFormat.Appendable in class edit.
[error] Unspecified value parameter m.
[error] Ok(views.html.websites.edit(model)(request.context))
[error]

我尝试像这样传递 messageApi:
 Ok(views.html.websites.edit(model)(request.context, messageApi))

但是我在 Messages 和 MessageApi 之间遇到了类型不匹配错误。

我应该做什么?

P.S 我什至没有在我的 View 中使用消息,但我正在使用表单助手,我猜它在幕后使用消息......

最佳答案

看起来您正试图显式传递一个隐式参数,而另一个隐式传递。您必须明确地传递它们:

Ok(views.html.websites.edit(model)(request.context, implicitly[Messages]))

或两者都隐含:
implicit val context = request.context
Ok(views.html.websites.edit(model))

关于scala - 当我注入(inject) MessageApi 并使用 I18nSupport Trait 时如何传递消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com