MVC: JSF PATRÍCIA DOURADO Junho 2013 Histórico MVC • Model View Controller • Separar Interface do Usuário(UI) das regras de negócio e acesso a dados. • Utilizado em Smalltalk • Contexto inicial - desktop MVC Fonte: Wikipedia Commons [] Vantagens MVC • Múltiplas Visões • Facilidade Manutenção • Reuso MVC – Padrão de Projeto GAMMA, Erich et al. Padrões de projeto. New York: Bookman, 2005. Uso MVC – aplicações Web Uso MVC – aplicações Web Action Based x Component Based • Como escolher? Java Server Faces (JSF) JavaServer Faces Conceito • JavaServer Faces é uma especificação que define um framework de desenvolvimento de aplicações web baseado em componentes. Duas Principais Versões • • 1.2 – Distribuído no JEE5 2.0 – Distribuído no JEE6 Principais Implementações • • Mojarra (RI – Reference Implementation) Myfaces JavaServer Faces JavaServer Faces Especificação JSF – Componentes Simples Arquitetura JSF (MVC) Fonte: Apostila algaworks Ambiente de Desenvolvimento • Eclipse Juno • Tomcat v7 • Bibliotecas – Implementação JSF (Mojarra) • https://javaserverfaces.java.net/nonav/2.1/download.html – JSTL (JavaServer Pages Standard Template Library) • https://jstl.java.net/download.html Funcionalidades do JSF • • • • • • Conversão de Dados Validação Componentes Customizados Renderizadores Internacionalização Facelets Ambiente de Desenvolvimento • Exemplo Prático – Primeiro Exemplo JSF – Configuração – Diretório Padrão – Extensão xhtml Ciclo de Vida Managed Beans • Java Beans, que servem como canais entre a interface gráfica (a tela) e o back-end da aplicação (regras de negócio, acesso ao banco de dados, etc). • Continuação Exemplo – Criação de um formulário • o h:form sempre envia uma requisição HTTP do tipo POST – Validação do formulário (campo obrigatório, min ou máx de caracteres) – Mensagens após Validação Navegação Implícita • Não é necessário configuração no faces-config (JSF1) <navigation-rule> <from-view-id>/index.xhtml</from-view-id> <navigation-case> <if>#{pessoaBean.nome != null}</if> <to-view-id>/Resultado.xhtml</to-view-id> </navigation-case> </navigation-rule> Navegação Implícita Tipos de Escopo • Continuação Exemplo – Uso do componente dataTable para apresentar inserções – Manter os cadastros no dataTable (tipo de escopo) Bibliotecas de Componentes Adicionais • Prime Faces http://www.primefaces.org/showcase/ui/home.jsf http://www.primefaces.org/downloads.html • Rich Faces – http://showcase.richfaces.org/ • Tomahawk • YUI Configuração Prime Faces • Exemplo Prático – Primeiro Projeto JSF – Configuração – Melhoria da interface – usando um componente do Prime Faces Exercício • Acrescentar um componente PrimeFaces no formulário. Sugestões • Uso do Maven • Verificar Ciclo de Vida • Intercionalização Links Interessantes • Apostilas – http://www.caelum.com.br/apostila-java-testesjsf-web-services-design-patterns/ – http://www.caelum.com.br/apostila-java-web/ – http://www.algaworks.com/apostilas/