Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

como tudo acontece?

Não entendi como toda essa história começa. Como é e por quem que a pagina livro.xhtml é chamada? Não entendi o ciclo do jsf. Usando servlets, temos um web.xml que indica o welcome-file e quando temos um form tem a action para onde ela deve ser "encaminhada" pela anotação @WebServlet. Mas não entendi isso para o JSF. Alguém poderia me explicar? Obrigada.

3 respostas

No web.xml configuramos para que todas as requisições para uri terminadas em .xhtml fossem gerenciadas pelo JSF: Faces Servlet *.xhtml

E no form do livro.xhtml, estamos dizendo que a classe.método que vai receber os dados do form é o método gravar da classe LivroBean, isso foi feito pela instrução:

E a classe LivroBean foi declarada como um Controller do JSF, através da anotação @ManagedBean

solução!

No JSF basta você indicar na URL a view (página) que você deseja abrir que o framework fará todo o resto para você.

Como? Existe uma servlet específica do JSF chamada FacesServlet que faz toda a mágica para você.

Imagine essa servlet como um filtro: qualquer requisição que chegue em seu site passará por esse filtro e ele se encarregará de exibir sua página, instanciar os managedbeans e por ai vai.

Se você abrir seu web.xml verá a declaração dessa servlet, inclusive quando ela deve entrar em ação. Na aplicação, qualquer página acessada que termine com .xhml fará com que ela entre em ação.

Outro ponto interessante para quem vem de action based e vem para o JSF é que o primeiro define qual ação você chamará adicionando no atributo FORM do formulário. Isto é, quando você clica num botão chamará um método de alguma servlet indicada no form da página.

Já em JSF você indica a ação no próprio botão! Mas como isso é possível, já que perverte o funcionamento tradicional de uma aplicação web? JSF trabalha com o paradigma de componente e pensando em componente, principalmente se você já programou desktop, é o botão que dispara a ação, não o formulário.

Mas não se engane, no final o que o JSF gera para você é um código HTML que funcionará igual uma aplicação web tradicional, isto porque o navegador não entende componentes dos JSF. Quando você abre livro.xhtml.. tudo tem que ser convertido para HTML, CSS e JavaScript..as tecnologias que o navegador entende.

Consegui esclarecer sua dúvida?

Muito Obrigada Flávio! Agora comecei a entender.