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.
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.
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