5

入力フィールドの数が動的であるフォームがあります。

これらの入力フィールドをプレイフォームにどのようにマッピングできますか?たとえば、各入力タグの名前は「foo_x」です。ここで、xは、クライアント側で新しい入力フィールドが動的に作成されるたびにインクリメントされる整数です。Playで利用可能な自動マッピングはありますか、それとも「手動で」これを行う必要がありますか?もしそうなら、これはどのように行うことができますか?

4

2 に答える 2

8

ブライアンが述べたように、Playのドキュメントには、ニーズに合うはずの繰り返し値の例があります。

また、マッピング定義をネストできることにも注意してください。例として、私は次のようなものを持っています:

val editUserForm: Form[User] = Form(
    mapping(
        "username" -> text(minLength = 4, maxLength = 50),
        "emails" -> list(optional(email)).verifying(Messages("error.mandatoryEmail"), e => e.size > 0),
        "urls" -> list(text(maxLength = 255)),
        {
            // Binding: Create a User from the mapping result
            (username, emails, urls) => {
              // Here, emails is a List[Option[String]] 
              // and urls is a List[String]
            }
        } {
            // Unbinding: Create the mapping values from an existing User value
            user => Some(user.username, 
                        user.emails.map(e => Some(e.email)), 
                        user.urls.map(_.url))
        }
    )

そこではかなりのことが起こっていますが、私が示したかった重要な点は、オプションのリストを電子メールでネストし、リストに少なくとも1つの空でない要素が含まれていることを確認することです-事実上、ユーザーに少なくともリスト内の1つの要素。

お役に立てれば。

于 2012-08-09T19:38:54.357 に答える
5

Play2ドキュメントの「繰り返される値」を参照してください。

命名規則に従えば、これらを自動的にリストにマップすることができます。

于 2012-08-09T14:24:32.613 に答える