我的域类中有一个日期属性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']])
在调试器的帮助下,我发现只有正确设置instance3
了deactivation
属性(使用bindData()
和include
选项制作的属性)。其他 2 个实例已deactivation
设置为空。我想知道这个问题是否可能基于命名?