Grails,Joda-Time插件,TimePicker可以无效

时间:2015-05-16 11:15:42

标签: grails jodatime gsp

我有一个属性为start + end的域类,它们都是LocalTime(Joda-Time插件)。我希望结束时间可以为空。为此,我使用了以下约束:end nullable: true。脚手架是通过Joda模板实现的,它的工作非常好。唯一的问题是,对结束属性的时间选择器不选择任何内容会导致:Cant populate a class org.joda.time.LocalTime without a hour

这是视图中生成的代码:

<div class="fieldcontain ${hasErrors(bean: dailyBookingInstance, field: 'end', 'error')} ">
    <label for="end">
        <g:message code="dailyBooking.end.label" default="End" />
    </label>
    <joda:timePicker name="end" value="${dailyBookingInstance?.end}" default="none" noSelection="['': '']"></joda:timePicker>
</div>

1 个答案:

答案 0 :(得分:1)

这是一个绑定错误 - Joda Time Plugin - Fields nullable?

一个解决方法是 -

在视图中更改字段名称,例如time

<joda:timePicker name="time" value="${myDomainInstance?.end}" default="none" noSelection="['': '']"/>

并且只在数据存在时才在域实例中填充此内容,例如

def save(MyDomain myDomainInstance) {

  if(params.time_minute && params.time_hour){
    myDomainInstance.end = new LocalTime(params.int('time_hour'), params.int('time_minute'))
    myDomainInstance.validate()
  }

  //Other save code
}

希望这有助于...... ,.