Grails 2.3 - Problema com upgrade
28/01/2014 09:27
1
Olá pessoal,

há tempos venho tentando fazer o upgrade de meu projeto grails 2.2.4 para qualquer versão 2.3, mas estou barrando em um sério problema para mim.

1. Eu possuía algumas constraints com a tag (blank:false) nos atributos do tipo String e agora não funciona mais, só funciona se eu colocar (nullable:false), tenho que realmente fazer esta modificação?

2. Este segundo problema para mim é muito mais sério e precisava conseguir resolver. Eu tenho algumas views que possuem cadastros one-to-many com ajax, mas agora não consigo fazer nenhuma delas rodar de forma alguma, pois quando o objeto é recebido na action do controller a lista de objetos detalhe vem preenchida com objetos nulos, e isso funcionava 100% na versão 2.2.4. Vou citar um exemplo:

Tendo os seguintes domains:
class Ticket {
String titulo;

static hasMany = [acompanhamentos:Acompanhamento]
List acompanhamentos;
}
class Acompanhamento {
String mensagem;

static belongsTo = [ticket:Ticket]
}

E a seguinte action no TicketController:
@Transactional
def save(Ticket ticketInstance) {
if (ticketInstance == null) {
notFound()
return
}
if (ticketInstance.hasErrors()) {
respond ticketInstance.errors, view:'create'
return
}

println "- "+params.toString()
println "- "+params.getAt('acompanhamentos[0].mensagem');
println "- "+ticketInstance.acompanhamentos

ticketInstance.save flush:true

request.withFormat {
form {
flash.message = message(code: 'default.created.message', args:[message(code: 'ticketInstance.label', default: 'Ticket'), ticketInstance.id])
redirect ticketInstance
}
'*' { respond ticketInstance, [status: CREATED] }
}
}


** A action save, não consegue salvar meus acompanhamentos, salva apenas o ticket. Ao meu ver ele não consegue associar o que vem da minha tela com meu objeto. Deixei alguns "println" para vocês entenderem o que acontece e o resultado deles é o seguinte:

- [titulo:ticket mensagem, acompanhamentos[0].id:, acompanhamentos[0]:[id:, mensagem:acompanhamento mensagem], acompanhamentos[0].mensagem:acompanhamento mensagem, create:Criar, action:save, format:null, controller:ticket]
- acompanhamento mensagem
- [null]


Peço encarecidamente a ajuda de alguém! Já estou sem alternativa.

Tags: one-to-many 2.3 upgrade erro ajax um para muitos 2.2.4


1
Olá Roger!

Uma das grandes mudanças da versão 2.2 para a 2.3 é o método respond.
Este metodo leva em considerção o tipo da requisição para realizar as ações.
Exemplo:
quando voce envoca a url:
http://localhost/pessoa/list.json => será retornado os objetos no formato json
http://localhost/pessoa/list.xml => será retornado os objetos no formato xml
http://localhost/pessoa/list => será renderizada a view list.gsp

Talves você possa resolver o teu problema alterando os links adicionando o prefixo .json

createLink(controller:'pessoa', action: 'list.json')


0
Olá Leandro,

Muito obrigado pela resposta, mas não consegui aplicar sua sugestão.

Deixo um link aqui com o meu projeto.zip para o pessoal dar uma olhada e me ajudar a identificar meu problema, estou diariamente procurando uma solução mas não encontro.

https://dl.dropboxusercontent.com/u/9892734/Tickets.zip

Agradeço desde já.
30/01/2014 13:34


1
Roger,
Pelo que eu entendi no params os acompanhamentos estão chegando corretamente, certo? só no ticket que não está sendo atribuído corretamente, correto?
Se for mesmo esse o caso você pode pegar os acompanhamentos direto do params e atribuir explicitamente ao ticket. Não é a forma mais elegante mas pode funcionar.

Obs: como o ticket hasMany acompanhamento coloque a atribuição dentro de um for.
30/01/2014 17:49


0
Obrigado pela resposta Dyego,

eu até fiz desta forma que você me falou para testar, mas como você disse não é muito elegante.

Este é um projeto que fiz apenas de exemplo, pois no meu projeto que realmente fiz o upgrade são muitos controladores com este problema. Deve haver alguma forma mais elegante de corrigir isso...

31/01/2014 08:59


0
Também tive problemas quando tentei fazer o upgrade de meus projetos feitos na versão 2.2.4 pra qualquer outra versão 2.3.*

Desisti e continuei com a versão 2.2.4
02/03/2014 18:47


0
Tive que criar um novo usuário no GrailsBrasl.
Repetindo...

Também tive problemas quando tentei fazer o upgrade de meus projetos feitos na versão 2.2.4 pra qualquer outra versão 2.3.*

Desisti e continuei com a versão 2.2.4
06/03/2014 06:17


0
Obrigado por seu feedback Reinaldo, achava que era só eu que estava passando por isso.

Por hora desisti de fazer o upgrade mas ainda continuo em busca de uma solução.

Quem souber a solução, por favor avisa!!!!
12/03/2014 12:46



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