【发布时间】:2013-08-28 14:20:05
【问题描述】:
我有一个包含一些值的表单。当 POST 到服务器时,服务器会验证信息,如果任何字段无效,则应该返回填写的表单。
我目前的设置方式是这样的。
我有一个验证 2 个字段的表单。
val userForm = Form(
mapping(
"name" -> text,
"age" -> number(min=0, max=100)
)(User.apply)(User.unapply)
)
如果表单绑定失败,我会使用他们刚刚发布的值加载同一个表单。
def createItem() = IsAuthenticated {
username =>
implicit request => {
createExperienceForm.bindFromRequest().fold(
formWithErrors => BadRequest(
views.html.createItem(formWithErrors)
),
validForm => {
val itemCode = Item.createItem(validForm)
Redirect(routes.Item.item(itemCode).url)
}
)
}
}
问题是我必须在我的 HTML 页面中为每个表单手动设置值。例如。 @(itemForm: Form[ItemContent])
<input name="age" type="number" class="input-block-level" value="@itemForm.data.get("age")">
虽然这可行,但在较大的表单上会变得容易出错。对于每个字段,我需要直接设置值。是否可以自动填充这些字段?
【问题讨论】:
-
我不太清楚你所说的“自动填充”是什么意思。您可以使用标准播放助手,例如:@inputText(createExperienceForm("name"), '_label -> "Name") 会自动设置字段的值
-
如果默认助手的布局不符合您的需求,您可以随时覆盖它! playframework.com/documentation/2.1.x/ScalaFormHelpers
-
用javascript试试metawidget
标签: forms scala playframework playframework-2.0