我的域类中有一个名为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。我想知道这个问题是否可能基于命名?