从禁用的输入中删除数据
Remove data from disabled input
我在 html 中禁用了一个字段并通过 ajax 向控制器发送了一个请求,该字段没有随请求一起提供,但它仍然存在于 bean 中。
我怎样才能设法从 bean 中自动删除它?
简单控制器
def update(ConfiguracaoSistema configuracaoSistemaInstance) {
if (configuracaoSistemaInstance == null) {
notFound()
return
}
if (configuracaoSistemaInstance.hasErrors()) {
respond configuracaoSistemaInstance.errors, view: 'index'
return
}
configuracaoSistemaInstance.save flush: true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'configuracaoSistema.label', default: 'ConfiguracaoSistema'), ''])
redirect action: "index"
}
'*' { respond configuracaoSistemaInstance, [status: OK] }
}
}
在 gsp 中,我有一个字段,我将使用 jquery
将其禁用
<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>
我通过JQuery
将其设置为禁用后
$('.catix').each(function(){
$(this).attr("disabled", true);
$(this).prop('disabled', true);
});
我向控制器发送请求,我希望保存的实例在我刚刚禁用的字段中得到 'null',但它保留最后一个值。
这是一种方法。禁用该字段时恢复原始值。原始值可以存储为输入字段本身或隐藏字段中的数据属性。
向您的输入元素添加数据属性以存储原始值:
<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" data-originalvalue="${configuracaoSistemaInstance?.enderecoServicosCatix}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>
然后禁用时恢复原始值:
$('.catix').each(function(){
$(this).attr("disabled", true);
$(this).prop('disabled', true);
$(this).val($(this).attr('data-originalvalue'));
});
(我没测试过)
另一种方法是创建一个新参数并将其传递给您的控制器,该参数将指示它在绑定从视图接收到的数据时忽略所有 "catix" 输入。该新参数将是一个隐藏字段,如下所示:
<g:hidden name="catix_disabled" value="false"/>
我在 html 中禁用了一个字段并通过 ajax 向控制器发送了一个请求,该字段没有随请求一起提供,但它仍然存在于 bean 中。
我怎样才能设法从 bean 中自动删除它?
简单控制器
def update(ConfiguracaoSistema configuracaoSistemaInstance) {
if (configuracaoSistemaInstance == null) {
notFound()
return
}
if (configuracaoSistemaInstance.hasErrors()) {
respond configuracaoSistemaInstance.errors, view: 'index'
return
}
configuracaoSistemaInstance.save flush: true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'configuracaoSistema.label', default: 'ConfiguracaoSistema'), ''])
redirect action: "index"
}
'*' { respond configuracaoSistemaInstance, [status: OK] }
}
}
在 gsp 中,我有一个字段,我将使用 jquery
将其禁用<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>
我通过JQuery
将其设置为禁用后$('.catix').each(function(){
$(this).attr("disabled", true);
$(this).prop('disabled', true);
});
我向控制器发送请求,我希望保存的实例在我刚刚禁用的字段中得到 'null',但它保留最后一个值。
这是一种方法。禁用该字段时恢复原始值。原始值可以存储为输入字段本身或隐藏字段中的数据属性。
向您的输入元素添加数据属性以存储原始值:
<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" data-originalvalue="${configuracaoSistemaInstance?.enderecoServicosCatix}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>
然后禁用时恢复原始值:
$('.catix').each(function(){
$(this).attr("disabled", true);
$(this).prop('disabled', true);
$(this).val($(this).attr('data-originalvalue'));
});
(我没测试过)
另一种方法是创建一个新参数并将其传递给您的控制器,该参数将指示它在绑定从视图接收到的数据时忽略所有 "catix" 输入。该新参数将是一个隐藏字段,如下所示:
<g:hidden name="catix_disabled" value="false"/>