sábado, 18 de agosto de 2012

Uma Solução para o Binding do GWT

Ao desenvolver na framework gwt me deparei com um grande problema no binding.
O binding da tela para o bean tranquilo até então, porém quando se trata de alterar o bean e isso refletir na tela, me deparei com alguns problemas principalmente quando o bean e alterado.
Vou mostrar aqui uma solução que eu achei a mais viável para o tipo de programação que estou acostumado.


  • Primeiro criei uma super classe abstrata que dei o nome de Entidade.
  • estendi de BeanModel e implementei Serializable e coloquei a anotacão @Reflectable da framework  gwt-ent utilizada para reflexão da classe.
  • Sobrescrevi o construtor default e coloquei a seguinte linha
    super.setBean(this);
  • criei o metodo public final void setBeanModel(BeanModel bean)  
  • dentro desse metodo chamei um metodo que retorna um BeanModel fazendo reflexao da classe em questão.
  • Nas classes que estendem de Entidade nos metodos get e set alterei os mesmos utilizando os artificios    do BeanModel, que ficaram mais ou menos assim.
Exemplo de classe filha de Entidade.

Observe os metodos get e set que foram alterados para que funcione o binding.

Ao utilizar alguma entidade irei instancia-la somente um vez, a partir dai vamos utilizar o metodo setBeanModel. Ex: Pessoa pessoa = new Pessoa();
Digamos que pesquisei no banco e retornou um novo objeto preenchido só que agora irei fazer assim:
pessoa.setBeanModel(result), caso queira limpar o objeto assim: pessoa.setBeanModel(new Pessoa()), caso você faça isso pessoa = new Pessoa() uma segunda vez o binding ira perder sua referência.




Classe UtilGwtReflexão.



Nenhum comentário:

Postar um comentário