Mapping Play Framework form element to custom type
我想将表单元素映射到
1 2 3 4 5 6 7 |
映射do
1 2 3 4 5 6 | val itemForm = Form( mapping( "timeField" -> sqlTime("H:mm"), //my own mapping function "dateField" -> sqlDate("yyyy\\M\\d") )(Item.apply)(Item.unapply) ) |
您可以使用自定义格式化程序来实现。代码看起来像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def sqlTime(pattern: String) = of(sqlTimeFormat(pattern)) def sqlTimeFormat(pattern: String): Formatter[java.sql.Time] = new Formatter[java.sql.Time] { def bind(key: String, data: Map[String, String]) = { try { val sdf = new SimpleDateFormat(pattern) Right(new java.sql.Time(sdf.parse(data.getOrElse(key,"")).getTime)) } catch { case e: Exception => Left(List(FormError(key,"Your error message"))) } } def unbind(key: String, value: java.sql.Time) = Map(key -> value.formatted(pattern)) } |
注意:我还没有测试过,您可能需要做一些调整,但是应该将其关闭。