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