Pergunta

O meu pedido é logicamente dividido em servidor, que contêm os meus objetos de domínio Grails e controladores; e cliente, onde eu tenho minhas aulas Ext GWT que constroem todas as páginas de interface do usuário.

Para solicitações de interface do usuário, estou usando uma chamada de AJAX para um método de controlador que retorna, por exemplo, uma lista de objetos de domínio como uma estrutura JSON.

A seguir o princípio de DRY, eu não gostaria de "serialize" os dados do domínio para uma string JSON no servidor depois de-serialize-lo no cliente para outra estrutura - Eu gostaria de aproveitar o objeto Domínio Eu já tenho, isso eu não tenho que mudar vários lugares quando eu adicionar, alterar ou remover um novo campo.

A pergunta é: é que uma boa maneira de ir?

Se sim, como seria a melhor maneira de fazer objetos disponíveis de domínio .groovy sobre o "client-side" aulas Ext GWT Java?

Se não, por que é ruim eo que você aconselhar vez?

Foi útil?

Solução

Também não existe uma boa maneira - você precisa de um objeto Java que é GWT serializável. A única solução real que eu posso ver é escrever um plugin (ou adicionar o plugin GWT) uma maneira de gerar automaticamente o objeto de transferência de dados, talvez usando anotações em um objeto de domínio grails.

Um método semelhante está sendo usado para gerar automaticamente as interfaces RPCAsync no GWT plugin - veja GwtGrailsPlugin.groovy no diretório GWT plugin, linha 133 ou assim é o começo.

Você poderia ligar para que (ou apenas modificar esse arquivo diretamente, provavelmente mais fácil) e inserir algum código para gerar os arquivos de transferência de dados. Um benefício adicional pode ser que você poderia granularize o objeto de transferência de dados de modo que os dados privados (como senhas!) Não obter transferido.

Outras dicas

Como alternativa, você pode enviar seus dados para o clientside como quer json ou xml. você pode criar uma API REST para o seu serverside.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top