Utilizando JavaBeans

Uns dias atrás surgiu um tópico sobre JavaBeans onde foi dito que um JavaBean também pode ter alguma inteligência (outros métodos além de getter´s e setter´s somente). Mesmo tendo outros métodos ele ainda pode ser utilizado em uma view JSP com a tag ?

Claro, numa boa! :slight_smile:

Voce só nao vai conseguir usar os métodos que não seguem a convenção de getters e setters no atributo property (property=“foo” nao vai conseguir chamar findFoo(), por exemplo)

blz… entendí, ou seja, a tag useBean é válido para qualquer atributo que possua os métodos get() e set()…

Isso é válido quando você está usando JSP somente. Mas se você trabalhar com JSTL você pode usar outros métodos de forma muito simples.

No JavaMagazine tem um ótimo tutorial sobre o básico, e tem umas matérias da IBM também…

Gustavo Guilherme BacK

só para encher o saco do CV :slight_smile:

se tu criar um BeanInfo para a classe, e declara-lo como JavaBean no jar, tu pode usar qualquer metodo como leitor ou gravador de uma propriedade, basta especificar isto no BeanInfo :slight_smile:

Certissimo, urubatan! Mas… sério, eu NUNCA vi alguem implementar uma BeanInfo até hoje, a nao ser a Swing, e mesmo assim olha lá que não tem muita coisa :smiley:

Pensando um pouco mais eu posso afirmar que JavaBeans somente são uteis se estiver desenvolvendo MV? Pois se estou utilizando um Controller perde o sentido de utilizar JavaBeans, já que todos meus request´s passarão pelo Controller… exagerei?

na real, eu acho que tu viajou legal, ou então fui eu, pois não entendi nada do que tu quiz dizer :slight_smile:

Ué, qual o objetivo dos beans? Não é permitir que vc acesse seu modelo diretamente de sua view? Isso perde o sentido se vc coloca um Servlet entre seu view e seu modelo…

Não perde o sentido não. Você encapsula os dados que serão usados no view em beans. Quem vai fazer o view só tem de saber como funcionam os bean’s

Gustavo Guilherme BacK

Por exemplo, no meu servlet eu tenho o seguinte código:

MyClassBean myBean = new MyClassBean(); session.setAtributte("bean", myBean); RequestDispatcher page = request.getRequestDispatcher("pagina.jsp"); page.forward(request, response);

Aí na minha pagina.jsp eu tenho o código:

<jsp:useBean id="bean" class="MyClassBean" scope="session">

Isso quer dizer que “bean” não será uma nova instância de MyClassBean e sim apontará para o objeto que eu coloquei na session?

exato :slight_smile:

valeu!

Lembrem que não basta ter get’s e set’s em suas classes. A classe tem que obedecer a especificação Javabean.

E a utilização de Javabeans facilita bastante a apresentação da interface no MVC, assim como em outra camada da aplicação pode funcionar como um DAO (Data Access Object) ou um Value Object.

Andei estudando um pouco atrasado o Struts e os ActionForms fazem as vezes do Javabean de forma fantástica para navegação entre páginas, vale a pena estudar.