在playframework scala

时间:2018-03-28 09:13:30

标签: forms scala playframework mapping

我在表单playframework中有26个用于映射方法的参数。但是,它失败了。

mapping(
    "id" -> number,
    "field_1" -> text,
    "field_2" -> text,
    "field_3" -> text,
    "field_4" -> text,
    "field_5" -> text,
    "field_6" -> text,
    "field_7" -> text,
    "field_8" -> text,
    "field_9" -> text,
    "field_10" -> text,
    "field_11" -> text,
    "field_12" -> text,
    "field_13" -> text,
    "field_14" -> text,
    "field_15" -> text,
    "field_16" -> text,
    "field_17" -> text,
    "field_18" -> text,
    "field_19" -> text,
    "field_20" -> text,
    "field_21" -> text,
    "field_22" -> text,
    "field_23" -> text,
    "field_24" -> text,
    "field_25" -> text
)(Data.apply)(Data.unapply)

但是,我不知道如何解决它,你能帮助我,非常感谢你!

2 个答案:

答案 0 :(得分:0)

您达到了最高限额,请参阅Play Doc

  

注意:单个元组或映射的最大字段数为22   实现表单处理的方式。如果你有超过22   您的表单中的字段,您应该使用列表或分解您的表单   嵌套值。

答案 1 :(得分:0)

如果您有超过22个字段,则达到限制以使用unapply和tupled方法。你可以做的一种方法是将case类分解为多个peices(例如来自play docs):

case class AddressData(street: String, city: String)

case class UserAddressData(name: String, address: AddressData)
val userFormNested: Form[UserAddressData] = Form(
  mapping(
    "name" -> text,
    "address" -> mapping(
    "street" -> text,
    "city" -> text
    )(AddressData.apply)(AddressData.unapply)
  )(UserAddressData.apply)(UserAddressData.unapply)
)