在playframework中提交带有joda时间的表单

时间:2013-01-28 04:08:21

标签: hibernate session playframework jodatime

我使用play-framework 1.2.5。

我有一个html表单(groovy模板),应该编辑一些产品。 我在本产品中的一个字段是:“updateDate” - joda-time日期类型。

当我提交表单时,我希望得到一个带有当前更新日期字段(=当前提交时间)的输出,但我有旧值 - 上一个日期。我做错了什么?

这是form.html模板片段:

#{form @Products.save()}

  <input type="hidden" name="product.id" value="${product?.id}">

  %{
     org.joda.time.DateTime nowTime = org.joda.time.DateTime.now();
  }%

  <input type="hidden" name="product.updateDate" value="${nowTime}">    
   ...    

  <input type="submit" value="Save this product" id="saveProduct">
#{/form}

注意:

值:“$ {nowTime}”在模板中是正确的(我已经检查过),错误的值被传递给控制器​​的save()方法。

2 个答案:

答案 0 :(得分:1)

Play 1.2.x支持自动绑定到Date对象,它支持许多不同的日期格式。检查http://www.playframework.org/documentation/1.2.5/controllers#binding

我不了解DateTime支持,但您可以随时接受它作为Date实例并根据需要创建一个DateTime,或者您可以实现TypeBinder接口来创建自己的自定义映射。见http://www.playframework.org/documentation/1.2.5/controllers#custombinding

答案 1 :(得分:0)

这是可怕的代码。您可以让用户伪装更新日期,只需传递他们喜欢的任何值。

但是我从你的评论中看到你想出了一种在控制器代码中很好地完成它的方法。我经常通过扩展save方法在模型代码中执行此操作,因此它设置更新时间然后调用super.save()