我的模型如下:
case class User(username: String, email: String) {
var id:Int = User.nextId
}
object User {
protected var currentId = 0
def nextId: Int = {
currentId += 1
currentId
}
}
我的控制器看起来像这样:
object Users extends Controller {
val users: scala.collection.mutable.Map[String, User] = new HashMap
val form = Form(
mapping(
"username" -> text,
"email" -> text
)(User.apply)(User.unapply))
def add = Action {
Ok(views.html.users.add(form))
}
def save = Action{
implicit request =>
val user = form.bindFromRequest.get
users.put(user.id, user)
Ok("contact saved")
}
}
但是当我编译代码时,我的浏览器会抛出一个错误,告知users.put(user.id, user)
接受的类型中存在未匹配。
错误消息如下所示:
当我将id的类型更改为字符串然后它将工作但我想将我的id保持为整数而不是字符串。
我有什么办法可以做到这一点。我正在使用play framework 2.11.1。
我错过了什么。任何帮助都会非常感激,因为我是新手来玩框架。
答案 0 :(得分:3)
users
是从String
到User
的地图。
val users: scala.collection.mutable.Map[String, User] = new HashMap
put
方法需要类型为String
的密钥和类型为User
的值,但您尝试将其与Int
类型的密钥一起使用。
您需要将地图更改为
类型scala.collection.mutable.Map[Int, User]
或者您可以使用类型String
的值作为键。