【发布时间】:2012-12-06 21:05:16
【问题描述】:
我想在 Play Framework 2.1 中为具有日期/时间字段的表单创建一个表单绑定。是否有用于日期/时间输入的标准验证器?我了解页面表单还应该以特定格式发送日期/时间。有谁知道任何预制解决方案?或者可以描述一下如何自己实现?
【问题讨论】:
标签: forms scala playframework-2.0 playframework-2.1
我想在 Play Framework 2.1 中为具有日期/时间字段的表单创建一个表单绑定。是否有用于日期/时间输入的标准验证器?我了解页面表单还应该以特定格式发送日期/时间。有谁知道任何预制解决方案?或者可以描述一下如何自己实现?
【问题讨论】:
标签: forms scala playframework-2.0 playframework-2.1
Play 2.1 有 built-in support 用于 Twitter Bootstrap;如果您采用这条路线,那么Bootstrap Date Picker 是客户端的一个很好的调用(即确保日期以yyyy-mm-dd 或其他有效日期格式发送)。
在处理好客户端后,服务器端 Play 2.1 支持JodaTime,因此您可以像这样绑定 post'd 表单日期:
object FooForm {
import play.api.data.{Form, Forms}, Forms._
val mapper = mapping(
'fooDate-> jodaDate("yyyy-MM-dd")
)(Foo.apply)(Foo.unapply)
val form = Form( mapper )
}
【讨论】:
code import org.joda.time.DateTime case class CompanyFormInput(company_name: String, date_created: DateTime)
就像@virtualeyes 所说,从客户端,DatePicker 将生成正确的数据格式(默认为 dd/MM/yyyy)。
但是,Play Framework 需要使用 bindFronRequest(客户端 -> 服务器)正确解组日期格式。
另外Play在生成Form的时候需要生成正确的Date字符串表示,会发送到视图(控制器->视图)。在 java 中,这可以通过提供DataBinder 来完成。
可以在issue opened on GitHub找到一个例子
【讨论】: