【问题标题】:Play Framework 2.1 Scala - form binding for datePlay Framework 2.1 Scala - 日期的表单绑定
【发布时间】:2012-12-06 21:05:16
【问题描述】:

我想在 Play Framework 2.1 中为具有日期/时间字段的表单创建一个表单绑定。是否有用于日期/时间输入的标准验证器?我了解页面表单还应该以特定格式发送日期/时间。有谁知道任何预制解决方案?或者可以描述一下如何自己实现?

【问题讨论】:

    标签: forms scala playframework-2.0 playframework-2.1


    【解决方案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 )
    }
    

    【讨论】:

    • 有什么方法可以获得 Java 等价物?
    • 不确定 java 表单 API,类似的应该是可能的,特别是在 Play 2.3 中,他们已经在框架的 Java 方面投入了大量工作。
    • 对我来说不行,我的代码手动 import JodaTime code import org.joda.time.DateTime case class CompanyFormInput(company_name: String, date_created: DateTime)
    【解决方案2】:

    就像@virtualeyes 所说,从客户端,DatePicker 将生成正确的数据格式(默认为 dd/MM/yyyy)。

    但是,Play Framework 需要使用 bindFronRequest(客户端 -> 服务器)正确解组日期格式。

    另外Play在生成Form的时候需要生成正确的Date字符串表示,会发送到视图(控制器->视图)。在 java 中,这可以通过提供DataBinder 来完成。

    可以在issue opened on GitHub找到一个例子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多