Play! 中的嵌套形式斯卡拉 2.2
Nested form in Play! Scala 2.2
我已经阅读了好几遍文档,但我在 Play 中的嵌套表单仍然存在问题! Scala 2.2(进一步详细说明)。
这是我的表格:
<form method="post" action="/admin/test2">
first name : <input type="text" name="firstname"> <br>
info 0 : <input type="text" name="label[0]"> <br>
info 1 : <input type="text" name="label[1]"> <br>
<input type="submit" value="test nested form" />
</form>
与类大小写对应:
case class Contact(firstname: String,
informations: Seq[ContactInformation])
case class ContactInformation(label: String)
val contactForm: Form[Contact] = Form(
mapping(
"firstname" -> nonEmptyText,
"informations" -> seq(
mapping(
"label" -> nonEmptyText
)(ContactInformation.apply)(ContactInformation.unapply)
)
)(Contact.apply)(Contact.unapply)
)
def saveContact = Action { implicit request =>
contactForm.bindFromRequest.fold(
formWithErrors => Ok("error"),
contact => {
println(contact)
Ok("Done")
}
)
}
我没有收到任何错误,但是我从表格(打印有 println(contact)
)中获得的联系人信息字段为空,即看起来像这样:Contact(h,List())
错误可能来自 html
部分,因为我已经严格遵守此页面的文档:play! scala forms documentation
但是我想不通。
input
的字段名称应该使用Form
中的完整路径。 label
出现在 informations
Mapping
中,而 informations
是序列,而不是 label
,所以你应该使用 informations[0].label
而不是 label[0]
。
您的视图应如下所示:
first name : <input type="text" name="firstname"> <br>
info 0 : <input type="text" name="informations[0].label"> <br>
info 1 : <input type="text" name="informations[1].label"> <br>
我已经阅读了好几遍文档,但我在 Play 中的嵌套表单仍然存在问题! Scala 2.2(进一步详细说明)。
这是我的表格:
<form method="post" action="/admin/test2">
first name : <input type="text" name="firstname"> <br>
info 0 : <input type="text" name="label[0]"> <br>
info 1 : <input type="text" name="label[1]"> <br>
<input type="submit" value="test nested form" />
</form>
与类大小写对应:
case class Contact(firstname: String,
informations: Seq[ContactInformation])
case class ContactInformation(label: String)
val contactForm: Form[Contact] = Form(
mapping(
"firstname" -> nonEmptyText,
"informations" -> seq(
mapping(
"label" -> nonEmptyText
)(ContactInformation.apply)(ContactInformation.unapply)
)
)(Contact.apply)(Contact.unapply)
)
def saveContact = Action { implicit request =>
contactForm.bindFromRequest.fold(
formWithErrors => Ok("error"),
contact => {
println(contact)
Ok("Done")
}
)
}
我没有收到任何错误,但是我从表格(打印有 println(contact)
)中获得的联系人信息字段为空,即看起来像这样:Contact(h,List())
错误可能来自 html
部分,因为我已经严格遵守此页面的文档:play! scala forms documentation
但是我想不通。
input
的字段名称应该使用Form
中的完整路径。 label
出现在 informations
Mapping
中,而 informations
是序列,而不是 label
,所以你应该使用 informations[0].label
而不是 label[0]
。
您的视图应如下所示:
first name : <input type="text" name="firstname"> <br>
info 0 : <input type="text" name="informations[0].label"> <br>
info 1 : <input type="text" name="informations[1].label"> <br>