对于具有BindingFormat的日期类型,Grails数据绑定不起作用OOTB

时间:2014-05-22 14:37:59

标签: grails data-binding grails-2.3

我的域类中有一个名为deactivation的日期属性Service

import org.grails.databinding.BindingFormat
class Service
    // ...
    @BindingFormat('dd-MM-yyyy')
    Date deactivation 

我正在使用jquery UI datepicker使用自定义格式从用户那里获取日期:

<div class="fieldcontain ${hasErrors(bean: serviceInstance, field: 'deactivation', 'error')} ">
    <g:textField id="deactivation" name="deactivation" value="${serviceInstance?.deactivation}"/>
</div>

<script>    
$(function() {
    $('#deactivation').datepicker({ dateFormat: 'dd-mm-yy' });
});
</script>

使用标准控制器更新方法:

@Transactional
def update(Service serviceInstance) {
    // ...

这不起作用 - 提交表单后deactivation属性为null。但是,当我在update()方法的开头添加这一行时:

serviceInstance.deactivation = params.date('deactivation', 'dd-MM-yyyy')

一切正常,deactivation属性设置正确值。

我错过了什么?

修改

我通过添加以下代码进行了一些进一步的实验:

    def update(Provpn serviceInstance) {
        def instance = new Provpn(params)
        def instance2 = new Provpn()
        def instance3 = new Provpn()
        bindData(instance2, params)
        bindData(instance3, params, [include: ['deactivation']])

在调试器的帮助下,我发现只有instance3正确设置了deactivation属性(使用bindData()include选项创建的属性)。其他2个实例将deactivation设置为null。我想知道这个问题是否可能基于命名?

0 个答案:

没有答案