Bom pessoal minha duvida é a seguinte, la no Java Desktop para cada Bean eu criava um controle especifico, estou começando estudar Web usando JSF.
Em ums tutoriais por ai na net encontrei situações onde não se criava um controle para o bean ou seja como no JSF se usa o bem gerenciado os respectivos métodos de validações e outros responsáveis pelo controle eram criados no próprio Bean. Bom finalizando essa é minha grande duvida, com JSF o próprio Bean e responsável pelo seu controle ? e se a resposta for não como isso deve ser feito já que o Bean e gerenciado pela pagina JSF como se faz pra chamar o controle ?? Obrigado!
bean será um bean. POJO. No JSF o ideal é tu ter o teu ManagedBean que é o controller. Se tu passa essa responsabilidade para o bean, infelizmente não tá fazendo no modelo ideal. evidente que vai funcionar, mas não é a melhor opção.
Certo entendi. Mais agora estou com outra duvida, em codigo como vai ser o manegBean porque no Bean em si no POJO, eu defino ele no xml para que ele seja gerenciado pela mina pagina xhtml, isso me da acesso aos atributos do Bean mais ai quando eu for por exemplo gravar esse objeto no banco como eu faço pra passar esse Bean para o meu controller chamar a Dao para gavar esse Bean ??
Vamos dizer que você tenha a classe carro, que é um POJO, uma classe de entidade e está definida desse modo:
public class Carro {
private String motor;
private String modelo;
public Carro(){
}
//Respectivos getters e setters.
}
Essa classe NÃO, DE FORMA ALGUMA deve ser um ManagedBean, ela não deve ser chamada diretamente na view… Para isso você tem o controller, que deve ser definido assim:
@ManagedBean
@WhateverScoped
public class CarroController {
private Carro carro;
public CarroController(){
}
//Respectivos getters e setters.
}
Ai sim, na view, na sua página xhtml você chama a referencia a esse pojo, por exemplo:
<h:outputLabel value="Modelo: " />
<h:inputText value="#{carroController.carro.modelo}"/>
Dessa forma, quando for executada uma ação através do controller, esse terá um objeto da classe Carro manipulado por você na view, que poderá ser persistido no banco, ou usado para de qualquer outra forma.
bom cara tu tá fazendo errado, teu bean não é o controller. e quem do declara ou anota para o teu JSF é o managedBean que é outro cara.
http://camilolopes.wordpress.com/2009/09/02/serie-1-aplicacoes-jee-com-jsf/
http://camilolopes.wordpress.com/2009/09/13/serie-2-jsf-criando-um-newsletter-nb/
da uma olhada nesse post http://www.guj.com.br/java/224363--conceitual--quem-es-tu-managed-bean-no-mvc-/2#1430550
Eu devo ter nascido com ódio do JSF, só pode!
Valeu pessoal consegui entender direitinho agora, tudo ficou bem claro! Abraços.
[quote=diegosammet]Vamos dizer que você tenha a classe carro, que é um POJO, uma classe de entidade e está definida desse modo:
public class Carro {
private String motor;
private String modelo;
public Carro(){
}
//Respectivos getters e setters.
}
Essa classe NÃO, DE FORMA ALGUMA deve ser um ManagedBean, ela não deve ser chamada diretamente na view… Para isso você tem o controller, que deve ser definido assim:
@ManagedBean
@WhateverScoped
public class CarroController {
private Carro carro;
public CarroController(){
}
//Respectivos getters e setters.
}
Ai sim, na view, na sua página xhtml você chama a referencia a esse pojo, por exemplo:
<h:outputLabel value="Modelo: " />
<h:inputText value="#{carroController.carro.modelo}"/>
Dessa forma, quando for executada uma ação através do controller, esse terá um objeto da classe Carro manipulado por você na view, que poderá ser persistido no banco, ou usado para de qualquer outra forma.[/quote]
Valeu ficou bem explicativo!