Grails,Joda-Time 插件,TimePicker 可以为空不工作

标签 grails jodatime gsp

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

这是 View 中生成的代码:

<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>

最佳答案

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

一种解决方法是——

更改 View 中的字段名称,例如 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
}

希望这可以帮助..,。

关于Grails,Joda-Time 插件,TimePicker 可以为空不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274951/

相关文章:

grails - 使用eachWithIndex引导域

web-services - 如何通过安全层访问Grails中的Web服务

java - JodaTime,实例化一个类

oracle - 从多个列表填充Grails GSP表

html - 如何在gsp中将列表显示为多列

grails - ==〜 bool 运算符是做什么的?

java - Windows 上的 Grails 出错。无法找到有效的认证

android - java.lang.NoClassDefFoundError : org. 乔达.time.DateTime

java - joda LocalTime的Jackson连载

Grails - 如何从表单调用 Controller 方法