Grails、Joda-Time 插件、可为空的 TimePicker 无法正常工作

Grails, Joda-Time plugin, TimePicker nullable not working

我有一个域 class,属性为 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>

这是一个绑定错误 - 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
}

希望这对您有所帮助...,.