as grandes novidades do jsf 2.0!

Download As grandes novidades do JSF 2.0!

Post on 25-May-2015

7.520 views

Category:

Technology

6 download

Embed Size (px)

TRANSCRIPT

  • 1. 2 / 49www.4linux.com.br Experincia em misso crtica de misso crtica Pioneira no ensino de Linux distncia Parceira de treinamento IBM Primeira com LPI no Brasil + de 30.000 alunos satisfeitos Reconhecimento internacional Inovao com Hackerteen e Boteconet

2. 3 / 49www.4linux.com.br As grandesAs grandes novidades do JSFnovidades do JSF 2.0!2.0! 3. 4 / 49www.4linux.com.br A evoluoA evoluo JSF 1.0 Lanado em maro de 2004, sua especificao a JSR 127, no faz parte do conjunto de tecnologias padres do Java EE. Compatvel com servlet 2.3 e JSP 1.2 JSF 1.1 Lanado em maio de 2004, bug fixes corrigidos e ganhos de performance, a especificao continua a mesma, continua no fazendo parte do padro Java EE, possui suporte para a JDK 1.3 ou superior. Compatvel com servlet 2.3 e JSP 1.2. 4. 5 / 49www.4linux.com.br A evoluoA evoluo JSF 1.2 Lanado em maio de 2006, compatvel com servlet 2.5 e JSP 2.1. Segue a JSR 252. Faz parte do Java EE 5. Possui vrias vantagens por utilizar JSP 2.1, por exemplo, integrao com JSTL e Unified Expression Language, entre outras. 5. 6 / 49www.4linux.com.br Principais mudanas ePrincipais mudanas e melhorias do JSF 2.0melhorias do JSF 2.0 Lanado em Julho de 2009. Desenvolvido seguindo a JSR 314. Faz parte do Java EE 6. Compatvel com CDI, Servlet 3, JSP 2.2. Inmeras mudanas foram adotadas na verso 2.0. Para acompanhar todas as mudanas consulte o preface 1 da JSR 314 liberado em julho de 2009 As principais mudanas e melhorias adotadas foram: AJAX nativo Anotaes Navegao implcita e condicional 6. 7 / 49www.4linux.com.br Principais mudanas ePrincipais mudanas e melhorias do JSF 2.0melhorias do JSF 2.0 Integrao nativa com a JSR 303 Bean Validation View Parameters Passagem de parmetros via GET View Scope Custom Scope faces-config opcional Facelets como view padro Project Stage Resources SelectItens mais usveis Inmeras outras melhorias 7. 8 / 49www.4linux.com.br ResourcesResources Como era at o JSF 1.2 No JSF 2 novas tags foram adicionadas para o carregamento de CSS, Javascript, imagens Pode ser utilizado um mecanismo padro para carregar estes recursos na pgina, que consiste em criar um diretrio chamado resources na raiz da aplicao possvel definir se o javascript ou css ser carregado no head ou body da pgina atravs do atributo targeT 8. 9 / 49www.4linux.com.br ResourcesResources #{resources['images:logo.jpg']} Exemplo de estrutura de diretrios: 9. 10 / 49www.4linux.com.br AnotaesAnotaes Com o JSF 2 possvel criar managed beans e atribuir um escopo, converters e validators com anotaes sem utilizar nenhuma linha de XML no faces-config. Abaixo algumas anotaes includas no JSF 2 @ManagedBean, @ManagedProperty @FacesValidator, @FacesConverter @ApplicationScoped, @SessionScoped, @RequestScoped, @ViewScoped, @NoneScoped, @CustomScoped O faces-config.xml pode ser utilizado apenas para regras de navegao mais complexas. 10. 11 / 49www.4linux.com.br AJAX nativoAJAX nativo Nas verses 1.x do JSF necessrio a recorrer a frameworks JSF de terceiros, por exemplo, RichFaces, IceFaces, PrimeFaces. Abaixo um trecho de cdigo utilizando JSF 1.2 11. 12 / 49www.4linux.com.br AJAX nativoAJAX nativo Uma das principais melhorias no JSF 2 a possibilidade de fazer requisies de forma nativa sem a necessidade de um utilizar um framework visual de terceiros para isso. Abaixo o mesmo trecho de cdigo utilizando JSF 2.0 12. 13 / 49www.4linux.com.br Ajax nativoAjax nativo Nova API Javascript para requisies Ajax e acesso aos componentes: jsf.specversion jsf.getProjectStage() jsf.ajax.addOnEvent(metodoDeCallback) / addOnError 13. 14 / 49www.4linux.com.br Ajax NativoAjax Nativo @all - Todos os components da pgina. @none Nenhum componente da pgina. @this O selemento que disparou o pedido. @form O Formulrio e os components desse formulrio. 14. 15 / 49www.4linux.com.br EscoposEscopos Com o JSF 2 novos escopos foram adicionados: @ViewScoped e @CustomScoped Utilizando CDI em substituio aos Managed Beans podemos utilizar o escopo de conversao: @ConversationScoped Para quem j estava acostumado a utilizar o JBoss Seam, o @ViewScoped similar ao escopo de pgina e o @ConversationScoped similar ao escopo de conversao, j existentes desde a primeira verso do Seam. 15. 16 / 49www.4linux.com.br View ScopeView Scope @ManagedBean(name="clienteMB") @ViewScoped public class ClienteMB { } @Named(value="clienteMB") @ConversationScoped public class ClienteMB { } 16. 17 / 49www.4linux.com.br Navegao implcitaNavegao implcita No JSF 1.2 as regras de navegao obrigatoriamente precisavam ser configuradas no faces-config.xml /usuario/boasvindas.xhtmlnew/usuario/cadastrousuario.xhtml 17. 18 / 49www.4linux.com.br Navegao implcitaNavegao implcita Com o JSF 2 basta apenas informar o caminho da view nas actions, eliminando a necessidade de criar todas as vezes regras de navegaes no faces-config.xml public String novoUsuario() { usuario = new Usuario(); return "/usuario/cadastrousuario"; } Tambm podemos fazer da seguinte forma: /user/list.xhtml Caso no encontre a view, a navegao implicita encerrada, e torna a string um outcome. 19. 20 / 49www.4linux.com.br Navegao condicionalNavegao condicional Diferentemente da navegao implcita, a navegao condicional e definida no faces-config.xml Oferece maior poder de controle para a tag Feita atravs da tag dentro de um Podem ser adicionadas quantas tags forem necessrias A tag deve apontar para um mtodo ou expresso que retorne um valor valor booleano. A regra de navegao somente ser executada caso todas as tags retornem true. 20. 21 / 49www.4linux.com.br Navegao condicionalNavegao condicional boasvindas.xhtml edit #{usuarioBean.isAdmin} #{usuarioBean.idade > 18} cadastrousuario.xhtml 21. 22 / 49www.4linux.com.br Bean ValidationBean Validation JSF 2 compatvel com a JSR 303 Bean Validation necessrio que o ambiente oferea suporte para o Bean Validation Possui mecanismos avanados e customizveis de validao Proporciona maior reaproveitamento de cdigo para o JSF pois as regras de validao no ficam vinculadas diretamente nas pginas 22. 23 / 49www.4linux.com.br Bean ValidationBean Validation public class Cliente implements Serializable { @NotNull private Long id; @NotNull private String nome; @Size(max=30) private String sobrenome; @Past private Date dataNascimento; @Pattern(regexp = ".+@.+.[a-z]+" message="O e-mail informado no vlido") private String email; ... 23. 24 / 49www.4linux.com.br Bean ValidationBean Validation Nome Sobrenome Email Id 24. 25 / 49www.4linux.com.br View ParametersView Parameters View Parameters servem para atribuir os valores da query string passados por uma requisio GET de forma apropriada para o bean (managed bean ou CDI) Utilizamos as tags e para atribuir os valores da query string no bean Http://localhost:8080/client/show.xhtml?id=1 25. 26 / 49www.4linux.com.br View ParametersView Parameters Utilizamos as tags ou para requisies GET View Parameters podem ser utilizados para criar bookmarked links. 26. 27 / 49www.4linux.com.br SelectItemsSelectItems No JSF 1.2 para utilizarmos componentes do tipo select one e select many de forma dinmica era necessrio ou criar uma lista de SelectItems ou um Map public List getComboStatus(){ List lista = new ArrayList(); List resultado = getBuscaStatus(); for(Status s: resultado) lista.add(new SelectItem(s.id, s.nome)); return lista; } 27. 28 / 49www.4linux.com.br SelectItemsSelectItems Com o JSF 2 no precisamos mais criar uma lista de SelectItems possvel passar um List para os componentes do tipo select one e select many Novos atributos foram adicionados na tag 28. 29 / 49www.4linux.com.br Project StageProject Stage Com o JSF 2 possvel especificar no web.xml em quase fase do ciclo de desenvolvimento a aplicao se encontra javax.faces.PROJECT_STAGE Development Essa propriedade de configurao, permite que o JSF emita mensagens de erros mais completas no cliente, faciltando o desenvolvimento. 29. 30 / 49www.4linux.com.br Project StageProject Stage Os valores possveis so Development, UnitTest, SystemTest, Production, Extension. #{facesContext.application.projectStage} #{initParam['javax.faces.PROJECT_STAGE']} //Verificando atravs do enum de ProjectStage FacesContext facesContext = FacesContext.getCurrentInstance(); if (facesContext.isProjectStage(ProjectStage.Development)) { // executa determinada ao } 30. 31 / 49www.4linux.com.br Composite ComponentsComposite Components Prov meios mais simples de criar um componente customizado, sem a necessidade de criar tlds ou estender Renders. Simplesmente utilizando tag possvel criar um componente. .. 31. 32 / 49www.4linux.com.br Composite ComponentsComposite Components #{cc.attrs.title} - #{cc.attrs.description}