我有一个属性为 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/