0

我的域类中有一个日期属性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提交表单后属性为空。但是,当我在 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']])

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

4

0 回答 0