Rodrigo Milaré
Como gravar e exibir atributos de uma classe em outra?
Estou começando a trabalhar com Grails, uso a versão 2.3.8, e no projeto que tenho que fazer tem duas classes, "Cliente" com os atributos "Nome" e "CPF", e a outra classe "Endereco", com atributos "Rua", "Bairro" e "Número". A parte de gravar dados nas telas de Create e exibi-los nas telas de Show das duas classes, eu já fiz, mas eu também preciso gravar os atributos da classe "Endereco" nas telas Create e Show da classe "Cliente". Alguém tem alguma dica?
O embedded pode fazer isto para você:http://grails.org/doc/2.3.8/ref/Domain%20Classes/embedded.html
Dyego, ainda não consegui gravar os dados, mas muito obrigado pela dica, aprendi algo novo no grails.
acho que entendi sua dúvida. Seu problema não é com as classes de domínio, mas sim com a exposiçaõ das mesmas, certo?
Bom: o scaffolding do Grails apenas gera as páginas para uma entidade por vez. No seu caso, o que você terá de fazer é usar o scaffold estático (grails generate-all (nome da classe que você quer)) e, em seguida, customizar a exposição da sua página show, que é aonde você quer expor todos os deamis detalhes.
Por padrão, o que o Grails irá fazer é expor para você apenas um dos atributos da classe relacionada. O que você poderia fazer é sobrescrever o método toString da classe relacionada para que ficasse exposto de uma maneira melhor pra você quando for expor apenas este atributo.
Sim é isso mesmo, como que sobrescreve o método toString da classe que quero relacionar?
Imagine que você tenha uma classe como esta:
se você for expor os registros em um combobox vai ver um monte de coisas como "Pessoa : 1", "Pessoa : 2", etc. Este é o método toString padrão do Grails. Basta mudar sua classe para que fique como no exemplo a seguir: