Problemas no update de registro que utiliza databind
03/09/2012 17:34
0
Ola amigos to precisando de uma ajuda de voces, estou desenvolvendo uma aplicação e estou preso numa situação onde no update esta dando um erro de databind: Argument [target] is required by method [bindData] on class [core.ConfiguraNotaFiscalController]
abaixo o codigo que estou utlizando, lembrando que para salvar esta normal:

protected Map update(params) {
Map resposta = [:]
NotaFiscalConfigura notaFiscalConfiguraInstance = null

NotaFiscalConfigura.withTransaction { status ->
notaFiscalConfiguraInstance = NotaFiscalConfigura.get(params.id)
Empresa empresa = Sessao.empresaAtivo()
params.empresa = empresa

//prepara parametros Embedded
['aliquotaIss' ,'bairroTomador' ,'cepTomador' ,'cnpjTomador' ,'condicaoPagamento' ,'dataEmissao' ,'dataVisto' ,'descricao' ,'duplicata' ,'enderecoTomador' ,'fatura' ,'finalDescricao' ,'finalQuantidade' ,'finalTotal' ,'finalUnitario' ,'inicioDescricao' ,'inscRgTomador' ,'municipioTomador' ,'naturezaOperacao' ,'nomeTomador' ,'nota' ,'numero' ,'ufTomador' ,'ultimoNumero' ,'valorExtenso' ,'valorFatura' ,'valorServicos' ,'valorTotal' ,'valorTotalIss' ,'vencimento'].each{
NotaFiscalPosicao posicao = new NotaFiscalPosicao()
bindData(posicao, params[it], [include: ['altura', 'distancia']])
params[it] = posicao
}

//Faz bind com os parametros embedded
bindData(notaFiscalConfiguraInstance, params, [include: ['nome', 'aliquotaIss' ,'bairroTomador' ,'cepTomador' ,'cnpjTomador' ,'condicaoPagamento' ,'dataEmissao' ,'dataVisto' ,'descricao' ,'duplicata' ,'enderecoTomador' ,'fatura' ,'finalDescricao' ,'finalQuantidade' ,'finalTotal' ,'finalUnitario' ,'inicioDescricao' ,'inscRgTomador' ,'municipioTomador' ,'naturezaOperacao' ,'nomeTomador' ,'nota' ,'numero' ,'ufTomador' ,'ultimoNumero' ,'valorExtenso' ,'valorFatura' ,'valorServicos' ,'valorTotal' ,'valorTotalIss' ,'vencimento']])

if (!notaFiscalConfiguraInstance.save()) {
def erros = []
notaFiscalConfiguraInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}
def myCampos = new JsonSlurper().parseText(params.campos)
myCampos.each{campo ->
//println campo
if(campo.id == '') {
def notaFiscalTextoInstance = new NotaFiscalTextoFixo()
campo['nota'] = notaFiscalConfiguraInstance
bindData(notaFiscalTextoInstance, campo, [include: ['nota', 'campo', 'texto', 'concatenarNumeroRotis']])

if (notaFiscalTextoInstance.validate() == false) {
def erros = []
notaFiscalTextoInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}

notaFiscalTextoInstance.save()
} else {
def notaFiscalTextoInstance = NotaFiscalTextoFixo.get(campo.id)
bindData(notaFiscalTextoInstance, campo, [include: ['nota', 'campo', 'texto', 'concatenarNumeroRotis']])

if (notaFiscalTextoInstance.validate() == false) {
def erros = []
notaFiscalTextoInstance.errors.allErrors.each {
erros << message(error: it, encodeAs: 'HTML')
}
throw new IllegalStateException(erros.join(', '))
}

notaFiscalTextoInstance.save()
}
}

resposta = [status: 1, model: renderNotaFiscalConfigura(notaFiscalConfiguraInstance), mensagem: "Dados salvo com sucesso!"]
}
return resposta
}

def salvar() {
Map result
//println params

try {
if (params.id && (params.id.toLong() > 0)) {
result = update(params)
} else {
result = save(params)
}
} catch(IllegalStateException ise) {
result = [status: 2, mensagem: ise.message]

} catch(Exception e) {
result = [status: 2, mensagem: e.message]
}
render result as JSON
}


Agradeço desde ja vossa ajuda :)
Tags: dataBind, grails update, one to many


0
resolvido o erro estava no if:
if(campo.id == '') 
-- errado
if(campo.id <=0) 
-- correto
03/09/2012 19:05


0
Com o groovy você poderia usar assim:

if( campo.id )
05/09/2012 14:34



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto