加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 为什么Play拒绝表单报告“无法解决方法适用于此类签名

发布时间:2020-12-16 09:07:28 所属栏目:安全 来源:网络整理
导读:我有一个非常广泛的形式定义为; case class EditDetail(token: String,placeId: Long,// accessibility privateParking: Option[Boolean],privateParkingType: Option[Int],// 0: internal,1: external,3: street bikeParking: Option[Boolean],valetService
我有一个非常广泛的形式定义为;

case class EditDetail(token: String,placeId: Long,// accessibility
                      privateParking: Option[Boolean],privateParkingType: Option[Int],// 0: internal,1: external,3: street
                      bikeParking: Option[Boolean],valetService: Option[Boolean],wheelChairAccess: Option[Boolean],//  facilities
                      cashOnly: Option[Boolean],paymentMeans: Option[List[String]],// comma separated Option[List[String]]s
                      wifi: Option[Int],smoking: Option[Boolean],aircon: Option[Boolean],//  dining
                      dietaryRestrictions: Option[List[String]],mealsServed: Option[List[String]],alcoholChoice: Option[List[String]],outdoorSeating: Option[Boolean],catering: Option[Boolean],//  reservation
                      acceptsReservations: Option[Int] /*,// 0: no,1: yes,2: only groups
                           reservationMethods: Option[List[String]],// <-- the problem area
                           reservationUrl: Option[String],groupSizeMin: Option[Int],groupSizeMax: Option[Int],//  delivery & takeaway
                           delivery: Option[Boolean],minDeliveryAmt: Option[BigDecimal],takeAway: Option[Boolean],// atomosphere
                            musicType: Option[List[String]],ambiance: Option[List[String]],attire: Option[List[String]],surrounding: Option[List[String]],viewPoint: Option[Boolean],goodForKids: Option[Boolean],tv: Option[Boolean],sportsFeatured: Option[List[String]]*/) {
  var place: Place = _
  var user: User = _
}

var editDetailForm = Form(
  mapping(
    "token" -> nonEmptyText,"place_id" -> longNumber,/*ACCESSIBILITY*/
    "private_parking" -> optional(boolean),"private_parking_type" -> optional(number(0,3)),"bike_parking" -> optional(boolean),"valet_service" -> optional(boolean),"wheelchair_access" -> optional(boolean),/*FACILITIES*/
    "cash_only" -> optional(boolean),"payment_means" -> optional(list(text)),"wifi" -> optional(number(0,2)),"smoking" -> optional(boolean),"aircon" -> optional(boolean),//    /*DINING OPTIONS*/
    "dietary_restrictions" -> optional(list(text)),"meals_served" -> optional(list(text)),"alcohol_choice" -> optional(list(text)),"outdoor_seating" -> optional(boolean),"catering" -> optional(boolean),/*RESERVATIONS*/
    "accepts_reservations" -> optional(number)
    //    "reservation_methods" -> optional(list(text)) // <-- problem area
    //    "reservation_url" -> optional(text),//    "group_size_min" -> optional(number(0)),//    "group_size_max" -> optional(number(0)),//    /*DELIVERY & TAKEAWAY*/
    //    "delivery" -> optional(boolean),//    "min_delivery_amount" -> optional(bigDecimal),//    "takeaway" -> optional(boolean),//    /*ATMOSPHERE*/
    //    "music_type" -> optional(list(text)),//    "ambiance" -> optional(list(text)),//    "attire" -> optional(list(text)),//    "surrounding" -> optional(list(text)),//    "view_point" -> optional(boolean),//    "good_for_kids" -> optional(boolean),//    "tv" -> optional(boolean),//    "sports_featured" -> optional(list(text))
  )(EditDetail.apply)(EditDetail.unapply))

如果您看到上面的代码并看到标有< - problem area的行,如果我在EditDetail和editDetailForm中取消注释该行,我会得到:

Cannot resolve method apply with such signature: Missing arguments

为什么?

解决方法

那是因为你超过了单个元组的最大字段数(18),这是 Play doc所说的:

Note: Maximum number of fields for a single tuple or mapping is 18 due to the way form handling is implemented. If you have more than 18 fields in your form,you should break down your forms using lists or nested values.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读