【发布时间】:2012-08-10 18:34:12
【问题描述】:
我在玩 Play 时遇到问题!框架的映射功能。我怀疑它可能无法支持我传入的参数数量,因为当我仅限于一个映射时它可以工作,但在文档中没有找到太多:http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.data.Form
这是表格:
val paymentForm: Form[PaymentValues] = Form(
// Define a mapping that will handle User values
mapping(
"message" -> text,
"x_card_num" -> text,
"x_exp_date" -> text,
"exp_year" -> text,
"exp_month" -> text,
"x_card_code" -> text,
"x_first_name" -> text,
"x_last_name" -> text,
"x_address" -> text,
"x_city" -> text,
"x_state" -> text,
"x_zip" -> text,
"save_account" -> text,
"product_array" -> text,
"x_amount" -> text,
"products_json" -> text,
"auth_net_customer_profile_id" -> text,
"auth_net_payment_profile_id" -> text,
"customer_id" -> text,
"saved_payments_object" -> text )(PaymentValues.apply)(PaymentValues.unapply))
对以某种方式分解映射有什么建议吗?提前致谢。
这是错误:
! Internal server error, for request [GET /] ->
sbt.PlayExceptions$CompilationException: Compilation error [Overloaded method value [mapping] cannot be applied to ((java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]), (java.lang.String, play.api.data.Mapping[String]))]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11$$anonfun$apply$12.apply(PlayReloader.scala:224) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11$$anonfun$apply$12.apply(PlayReloader.scala:224) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11.apply(PlayReloader.scala:224) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11.apply(PlayReloader.scala:221) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
这是 PaymentValues:
package models
// definition of PaymentValues
case class PaymentValues(
message: String,
x_card_num: String,
x_exp_date: String,
exp_year: String,
exp_month: String,
x_card_code: String,
x_first_name: String,
x_last_name: String,
x_address: String,
x_city: String,
x_state: String,
x_zip: String,
save_account: String,
product_array: String,
x_amount: String,
products_json: String,
auth_net_customer_profile_id: String,
auth_net_payment_profile_id: String,
customer_id: String,
saved_payments_object: String)
【问题讨论】:
-
首先,PaymentValues 是一个
case class。如果是这样,你能把它放在问题中吗?因为问题应该来自那里。谢谢 -
为什么不直接做这里推荐的重构呢? stackoverflow.com/questions/11654992/…
-
Brian 是对的,您可能需要重构,因为表单映射 API 有 18 个参数的硬性限制(原因很像 Brian 的链接)
标签: forms scala playframework mapping playframework-2.0