quarta-feira, 22 de agosto de 2012

Criando um Field customizado complexo

Lembrando que nossas soluções dependem uma da outra.

Vamos criar um textArea que vai ter um label em baixo que ao digitar caso você tenha passado o maxChars ele vai mostrando quantos caracteres faltam.

Primeiro vamos criar um classe que extends de TextArea dentro dela criamos um evento para ser disparado quando o setValue for invocado.

Logo a seguir vamos cria a classe estendendo de Field onde vamos customizar nosso Field.



domingo, 19 de agosto de 2012

Automatizando o Binding nos fields gxt

Você pode fazer isso em todos fields que for criar. Basta passar a propriedade name que o nome do atributo da sua entidade e passar a instancia da Entidade que também é o nosso BeanModel, pronto seu componente já estará fazendo o binding.
Essa solução funciona em conjunto com a solução da publicação gwtgxt binding.



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.