Forms scala play框架表单中的自定义隐式转换

Forms scala play框架表单中的自定义隐式转换,forms,scala,playframework,Forms,Scala,Playframework,在一些国家,逗号用作小数点,但scala play框架表单中的隐式转换只接受点。所以我想将自定义字符串添加到bigDecimal转换中。我在想类似的事情 implicit object StringImplicits { implicit def String2Decimal(value: String) = new BigDecimal(value.replace(",", ".")) } 但是我应该把它放在哪里使它工作呢?我的表单如下所示,它位于控制器内: val priceFor

在一些国家,逗号用作小数点,但scala play框架表单中的隐式转换只接受点。所以我想将自定义字符串添加到bigDecimal转换中。我在想类似的事情

implicit object StringImplicits {
  implicit def String2Decimal(value: String) = new BigDecimal(value.replace(",", "."))
}
但是我应该把它放在哪里使它工作呢?我的表单如下所示,它位于控制器内:

  val priceForm = Form(
    mapping(
      "fuelPrice" -> bigDecimal(10, 2),
      "totalPrice" -> bigDecimal(10, 2)
    )(priceFormData.apply)(priceFormData.unapply)

在这方面,一个含蓄的人帮不了你。隐式表达式是在编译时解析的,所以不能使用它们神奇地应用于某些运行时值。您需要创建一个自定义的
映射[BigDecimal]
,它可以处理这两种数字格式。隐式映射在这里对您没有帮助。隐式表达式是在编译时解析的,所以不能使用它们神奇地应用于某些运行时值。您需要创建一个自定义的
映射[BigDecimal]
,它可以处理两种数字格式。