类型不匹配;找到 : play.api.data.Form[controllers.Application.Userda



我使用PlayFramework和Scala创建了一个简单的登录提交表单,而无需连接任何数据库。

我的application.scala是我的控制器,我已经编写了代码

import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import play.api.mvc.Request
import views.html._
case class Userdata(email:String,password:String)
object Application extends Controller {
  case class Userdata(email:String,password:String)
  val userForm = Form(
  mapping(
    "email" -> text,
    "password" -> text
  )(Userdata.apply)(Userdata.unapply)
)
   def usercheck = Action{ implicit request=>
    userForm.bindFromRequest.fold(
      formWithErrors => BadRequest(views.html.login(formWithErrors)),
         Userdata => {  Ok(views.html.index("congrates"))}
    )}
    def index() = Action {
    implicit request=>
    Ok(views.html.login(userForm))
  }

我的视图模板login.scala.html..

@(form: Form[(String,String)])
@import helper._

    @form(routes.Application.usercheck){
    <form class=frmuuser>
      <input type=text placeholder=email id='emailid'>
      <input type=password placeholder=password id='pwd'>
      <input type=submit value=login id='enter'>
    </form>
    }

但它不起作用并给我错误

type mismatch; found : play.api.data.Form[controllers.Application.Userdata] required: play.api.data.Form[(String, String)]

在这一行中

 formWithErrors => BadRequest(views.html.login(formWithErrors)), 

我的问题是什么灵魂??

需要注意的几点:

  • 将案例类放在应用程序控制器之外Userdata。即将其移动到控制器包内。
  • 您也可以在模板的开头添加@import,以导入任意包或类。

试试这个。

Application.scala:只有一个Userdata案例类定义(你定义了其中两个类)

import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import play.api.mvc.Request
import views.html._
case class Userdata(email:String, password:String)
object Application extends Controller {
  val userForm = Form(
  mapping(
    "email" -> text,
    "password" -> text
  )(Userdata.apply)(Userdata.unapply)
)
   def usercheck = Action{ implicit request=>
    userForm.bindFromRequest.fold(
      formWithErrors => BadRequest(views.html.login(formWithErrors)),
         Userdata => {  Ok(views.html.index("congrates"))}
    )}
    def index() = Action {
    implicit request=>
    Ok(views.html.login(userForm))
  }

login.scala.html : 使用Userdata代替(String, String)

@(form: Form[Userdata])
@import helper._
    @form(routes.Application.usercheck){
    <form class=frmuuser>
      <input type=text placeholder=email id='emailid'>
      <input type=password placeholder=password id='pwd'>
      <input type=submit value=login id='enter'>
    </form>
    }

最新更新