scala – 当我注入MessageApi并使用I18nSupport的特性时如何传递
发布时间:2020-12-16 09:10:57 所属栏目:安全 来源:网络整理
导读:我的控制器操作使用一个自定义操作,如下所示: class ActionWithContext @Inject()(....) extends ActionBuilder[ContextAwareRequest] { def invokeBlock[A](request: Request[A],block: (ContextAwareRequest[A]) = Future[Result]) = { ... }}class Conte
我的控制器操作使用一个自定义操作,如下所示:
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) 我的控制器看起来像: 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)) } } 视图页面如下所示: @(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之间有一个类型不匹配错误. 我该怎么办? 我甚至没有在我的意见中使用消息,但我使用的表单助手,我猜使用封面下的消息… 解决方法
看起来你正在试图传递一个隐式参数,而另一个则是隐式的.你必须明确地传递他们:
Ok(views.html.websites.edit(model)(request.context,implicitly[Messages])) 或者两者都是隐含的: implicit val context = request.context Ok(views.html.websites.edit(model)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |