2

いくつかの値を含むフォームがあります。サーバーに 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")">

これは機能しますが、大きなフォームでは少しエラーが発生しやすくなります。すべての単一フィールドについて、値を直接設定する必要があります。これらのフィールドを自動入力することは可能ですか?

4

1 に答える 1

0

ドキュメントには、それについて何かが書かれています http://www.playframework.com/documentation/2.2.x/ScalaForms - 「Fill values」まで下にスクロールします

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

于 2014-08-11T09:20:07.580 に答える