升级到 2.4 时播放框架表单类型不匹配
Posted
技术标签:
【中文标题】升级到 2.4 时播放框架表单类型不匹配【英文标题】:Play Framework Forms Type Mismatch When Upgrading to 2.4 【发布时间】:2016-09-02 09:09:48 【问题描述】:将我的 Play Framework 从 2.3.6 升级到 2.4.8 时,我收到此运行时错误,我请求第一页。
type mismatch;
found : play.api.data.Form[controllers.Account.PasswordData]
required: play.data.Form[controllers.Account.PasswordData]
与我的控制器中的这一行相关:
import play.api.data._
...
Ok(html.account.changePassword(passwordForm, "Change password", user))
在我看来这一行(password.scala.html):
@(passwordForm: Form[controllers.Account.PasswordData], title: String, user: User)(implicit flash: play.api.mvc.Flash)
现在看来 Play 在我导入时使用 play.data.Form 在视图中使用术语 Form。
解决此问题的最佳方法是什么?我应该将 play.api.data.Form 硬编码到视图中吗?或者将 Account.scala 中的 Form 对象更改为 play.data.Form?
play.api.data.Form和play.data.Form有什么区别?
谢谢!
【问题讨论】:
用这个“import play.data._”替换你的导入没有解决你的问题吗? 现在我正在尝试在模板文件中进行显式导入。还没有看到它是否有效。 我只是想知道是否有一些中心位置指定了默认导入? 【参考方案1】:解决了。我不小心将 play 配置为使用 Java API。在 Java API 中,Form 类是 play.data.Form,但在 Scala API 中,它是 play.api.data.Form。
它是在这一行的 build.sbt 配置中完成的:
lazy val root = (project in file(".")).enablePlugins(PlayScala, PlayEbean)
【讨论】:
那你是在做一个Scala项目吧?不是Java??我以为是Java。 :)以上是关于升级到 2.4 时播放框架表单类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章