【问题标题】:Autofilling a form using the Play Framework使用 Play 框架自动填充表单
【发布时间】: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


【解决方案1】:

文档说明了它http://www.playframework.com/documentation/2.2.x/ScalaForms - 向下滚动到“填充值”

val userForm = userForm.fill(User("Bob", 18))

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多