Novidades do JSF  Um tour completo no JSF 2.2      Alberto Lemos (Dr. Spock)         Senior Software Architect            ...
Agenda•   Sobre o JSF 2.2•   Roadmap•   Novas funcionalidades•   Ajudando a evoluir o JSF•   O projeto ScrumToys
Sobre o JSF 2.2•   Especificação em    desenvolvimento para o    Java EE 7•   JSR-344•   Arquitetura de componentes    visu...
Sobre o JSF 2.2•   Estabelece separação entre    definição de componentes da    respectiva renderização•   Permite os compo...
Objetivo   “Prover uma tecnologia Java padrão paraconstruir aplicações Web rapidamente, fácil de     manter, localizável, ...
Linha do tempo JSF/JSR•   JSR 127 (struts)            •   JSR 314 (Java EE 6)    •   JSF 1.0 Março 2004                   ...
Roadmap• Java EE 7 Roadmap  • Previsto para finalizar no Outono 2013  • https://blogs.oracle.com/theaquarium/entry/    java...
Novas funcionalidades
Novas funcionalidades•   Agrupados em três grupos por    tamanho/importância:    •   Large (6)        http://bit.ly/JCP_20...
Large Sized Features
Six Big Tickets•   HTML5 Friendly Markup•   Faces Flows•   Cross Site Request Forgery    Protection•   Componente de Uploa...
HTML 5 Friendly Markup•   Telas JSF são escritos numa VDL (View    Declaration Language)•   VDL Facelets é um arquivo XML ...
HTML 5 Friendly Markup•   Antes do JSF 2.2:    •   Tags JSF escondem HTML / JS / CSS / Img    •   Renderizadores: Geram HT...
HTML 5 Friendly Markup   •   Com o JSF 2.2:       •   HTML puro com JS / CSS / Img       •   Renderizadores: processam par...
Faces Flows•   Define o conceito de um “Flow”•   Padroniza tecnologias presentes em:    •   ADF Task Flows    •   Spring We...
Faces Flows• Pode ser “chamado” de qualquer ponto da  aplicação• Único ponto de entrada• Aceita parâmetros de entrada e sa...
Faces Flows•   Navegação não é mais entre páginas•   Navegação agora é entre nós de “flows”•   Define tipos de nós:    •   V...
Faces Flows•         Flow Navigation    Durante execução, um “Flow”    é representado por uma instância de    javax.faces....
Definindo um Flow
Empacotando um Flow•   Estrutura de empacotamento num JAR:    • META-INF/beans.xml    • META-INF/flows/{flowName}/{flowNam...
Cross-Site Request Forgery• O que é “Cross-Site Request Forgery”?  (CSRF pronuncia “see-surf”)  http://en.wikipedia.org/wi...
Cross-Site Request Forgery• JSF 2.2 encripta, por default, o “view state”• A cada requisição verifica: • Se é uma tela “pro...
Upload de Arquivos  • Implementação atual não tem suporte a Ajax  • A versão final da especificação suportará Ajax<h:inputFi...
Upload de Arquivos@ManagedBean@RequestScopedpublic class FileUploadBean {    private Part uploadedFile; // getter/setter  ...
Upload de Arquivos@FacesValidator(value="FileValidator")public class FileValidator implements Validator {    @Override    ...
Carga de Facelets via ResourceHandler•   JSF 2.0 Adicionou:    •   Facelets    •   ResourceHandler•   Estes conceitos não ...
Multi-templating•   Facelets permite padronizar elementos    de página•   Multi-templating permite padronizar    elementos...
Multi-templating1. <html xmlns="http://www.w3.org/1999/xhtml"2.     xmlns:h="http://java.sun.com/jsf/html"3.     xmlns:ui=...
Multi-templating1. <?xml version="1.0" encoding="UTF-8"?>2. <web-app>3.4.5. <context-param>6.         <param-name>javax.fa...
Medium Sized  Features
28 novas        funcionalidades•   Facelets:    •   Default HTML5 DOCTYPE    •   Criação programática de componentes      ...
Small Sized Features
44 correções de        defeitos•   Ajax•   EL•   Facelets•   Lifecycle•   Especificação de erros•   Componentes/Renderizado...
Contribuindo com a    evolução do JSF 2.2•   JSR-344 está sobre o JCP 2.8•   Transparência e acesso da comunidade•   1o. P...
Contribuindo com a    evolução do JSF 2.2•   3o. Passo: Iniciativa adote uma JSR    - http://soujava.org.br/servicos/adopt...
O projeto ScrumToys
Perguntas
Mais informações•   What’s New in JSF: A Complete Tour of JSF 2.2    http://bit.ly/VCo88k•   What’s new in JSF 2.2?    htt...
Obrigado!• Contato:  Dr. Spock  javaone@spock.com.br• Twitter:  @drspockbr• About me:  http://about.me/drspockbr
Upcoming SlideShare
Loading in …5
×

Novidades do JSF: Um tour completo no JSF 2.2

11,844 views

Published on

No processo de evolução da plataforma Java EE o JavaServer Faces continua contribuindo com a padronização da tecnologia de interfaces com usuário na Web com Java. A nova versão para o Java EE 7 conta com contribuições da comunidade e um processo transparante. Evoluções no JSF 2.2 são acompanhadas e influênciadas pela comunidade brasileira através da iniciativa adote uma JSR promovida pelo SouJava. Como parte desta iniciativa, esta sessão apresenta as novas funcionalidades previstas para o JSF 2.2 agrupadas de acordo a importância destas funcionalidades.

Published in: Technology
2 Comments
22 Likes
Statistics
Notes
No Downloads
Views
Total views
11,844
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
0
Comments
2
Likes
22
Embeds 0
No embeds

No notes for slide

Novidades do JSF: Um tour completo no JSF 2.2

  1. 1. Novidades do JSF Um tour completo no JSF 2.2 Alberto Lemos (Dr. Spock) Senior Software Architect SpockNET
  2. 2. Agenda• Sobre o JSF 2.2• Roadmap• Novas funcionalidades• Ajudando a evoluir o JSF• O projeto ScrumToys
  3. 3. Sobre o JSF 2.2• Especificação em desenvolvimento para o Java EE 7• JSR-344• Arquitetura de componentes visuais para aplicações Web• Lógica de UI principalmente no lado do servidor
  4. 4. Sobre o JSF 2.2• Estabelece separação entre definição de componentes da respectiva renderização• Permite os componentes ter o próprio “patch” da UI• Ciclo de vida bem definido: Inversão de controle
  5. 5. Objetivo “Prover uma tecnologia Java padrão paraconstruir aplicações Web rapidamente, fácil de manter, localizável, acessível, segura,independente do dispositivo, boa apresentação e legal de usar!”
  6. 6. Linha do tempo JSF/JSR• JSR 127 (struts) • JSR 314 (Java EE 6) • JSF 1.0 Março 2004 • JSF 2.0 Julho 2009 • JSF 1.1 Maio 2004 • JSF 2.1 Julho 2010• JSR 252 (Java EE 5) • JSF 2.1 Manutenção R2 • JSF 1.2 Novembro 2010 May 2006 • JSF 1.2 Manutenção R1 • JSR 344 • Dezembro 2006 JSF 1.2 Manutenção R2 • Iniciado em Abril 2011 Junho 2008 • Early Draft review • JSF 1.2 Manutenção R3 Dezembro 2011 Agosto 2008 • JSF 2.2 Public Draft review Dezembro 2012
  7. 7. Roadmap• Java EE 7 Roadmap • Previsto para finalizar no Outono 2013 • https://blogs.oracle.com/theaquarium/entry/ java_ee_7_roadmap• JSF 2.2 • Será finalizado junto com o Java EE 7 • Executará em contêiners Java EE 6
  8. 8. Novas funcionalidades
  9. 9. Novas funcionalidades• Agrupados em três grupos por tamanho/importância: • Large (6) http://bit.ly/JCP_20120911_BIG_TICKET • Medium (28) http://bit.ly/JCP_20120911_MEDIUM • Small (44) http://bit.ly/JCP_20120911_BUG_FIXES
  10. 10. Large Sized Features
  11. 11. Six Big Tickets• HTML5 Friendly Markup• Faces Flows• Cross Site Request Forgery Protection• Componente de Upload• Carga de Facelets via ResourceHandler• Multi-templating
  12. 12. HTML 5 Friendly Markup• Telas JSF são escritos numa VDL (View Declaration Language)• VDL Facelets é um arquivo XML com dois tipos de elementos: • HTML • Componentes JSF• HTML é repassado para o Navegador• Componentes JSF são interpretados no servidor
  13. 13. HTML 5 Friendly Markup• Antes do JSF 2.2: • Tags JSF escondem HTML / JS / CSS / Img • Renderizadores: Geram HTML e processam parâmetros recebidos do navegador<html>... <p:colorPicker value=“#{colorBean.color2}” /> <p:calendar value=“#{calendarBean.date1}” /></html>• Não suporta uma funcionalidade do Navegador? Escreve um novo componente!
  14. 14. HTML 5 Friendly Markup • Com o JSF 2.2: • HTML puro com JS / CSS / Img • Renderizadores: processam parâmetros recebidos do navegador<html>... <input type=“color” jsf:value=“#{colorBean.color2}” /> <input type=“date” jsf:value=“#{calendarBean.date1}” /></html> • Não suporta uma funcionalidade do Navegador? Use “pass through elements!
  15. 15. Faces Flows• Define o conceito de um “Flow”• Padroniza tecnologias presentes em: • ADF Task Flows • Spring Web Flow • Apache MyFaces CODI • Seam Framework Flows• Dica: Um Flow é análogo a um método Java!
  16. 16. Faces Flows• Pode ser “chamado” de qualquer ponto da aplicação• Único ponto de entrada• Aceita parâmetros de entrada e saída• Define um novo escopo: facesFlowScope• Nova anotação CDI: @FlowScoped
  17. 17. Faces Flows• Navegação não é mais entre páginas• Navegação agora é entre nós de “flows”• Define tipos de nós: • View - Representa uma página • Method Call - Invoca método via EL desacoplado de UI • Switch - Representa pontos de decisão num “flow” • Flow Call - Representa uma invocação de outro “flow” • Flow Return - Representa o retorno um “flow”
  18. 18. Faces Flows• Flow Navigation Durante execução, um “Flow” é representado por uma instância de javax.faces.flow.Flow !  Flow represented at• runtime by instance of A linguagem para construção javax.faces.flow.Flow de “flows” ainda está em !  JSF 2.2 authoring discussão: experience for flow still • XML under discussion –  XML • Builder Builder –  –  Fluent API • API Fluente 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  19. 19. Definindo um Flow
  20. 20. Empacotando um Flow• Estrutura de empacotamento num JAR: • META-INF/beans.xml • META-INF/flows/{flowName}/{flowName}-flow.xml • META-INF/flows/{flowName}/{viewNode}.xhtml • {javaPackagePath}/{javaClassName}.class• JAR é adicionado no Classpath (/WEB-INF/lib)• Fragmentos reusáveis de aplicação podem ser construídos, testados e distribuídos.
  21. 21. Cross-Site Request Forgery• O que é “Cross-Site Request Forgery”? (CSRF pronuncia “see-surf”) http://en.wikipedia.org/wiki/Cross-site_request_forgery• Ataque que força o usuário final executar ações indesejadas numa aplicação Web no qual está devidamente autenticado.
  22. 22. Cross-Site Request Forgery• JSF 2.2 encripta, por default, o “view state”• A cada requisição verifica: • Se é uma tela “protegida”, ou • Se é uma requisição de uma tela “protegida”, ou • Se o “referrer” da requisição é originária da aplicação Web
  23. 23. Upload de Arquivos • Implementação atual não tem suporte a Ajax • A versão final da especificação suportará Ajax<h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> <f:validator validatorId="FileValidator" /></h:inputFile>
  24. 24. Upload de Arquivos@ManagedBean@RequestScopedpublic class FileUploadBean { private Part uploadedFile; // getter/setter public String getFileText() { String text = ""; if (null != uploadedFile) { try { InputStream is = uploadedFile.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (IOException ex) {} } return text; }}
  25. 25. Upload de Arquivos@FacesValidator(value="FileValidator")public class FileValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { Part file = (Part) value; try { InputStream is = file.getInputStream(); text = new Scanner( is ).useDelimiter("A").next(); } catch (Exception ex) { throw new ValidatorException(“”, ex); } if (!text.contains("JSR-344")) { throw new ValidatorException( new FacesMessage("Invalid file”); }}
  26. 26. Carga de Facelets via ResourceHandler• JSF 2.0 Adicionou: • Facelets • ResourceHandler• Estes conceitos não eram unificados• Agora são unificados!• Tudo é carregado via ResourceHandler!
  27. 27. Multi-templating• Facelets permite padronizar elementos de página• Multi-templating permite padronizar elementos de site: • sidebar • menu de navegação • área de conteúdo• Permite definir um contrato e suportar “skinnability”• Multi-templates podem ser empacotados em JARs
  28. 28. Multi-templating1. <html xmlns="http://www.w3.org/1999/xhtml"2. xmlns:h="http://java.sun.com/jsf/html"3. xmlns:ui="http://java.sun.com/jsf/facelets">4.5. <body>6.7. <ui:composition template="#{template}">8.9.10. </ui:composition>11.12. </body>13.14.</html>
  29. 29. Multi-templating1. <?xml version="1.0" encoding="UTF-8"?>2. <web-app>3.4.5. <context-param>6. <param-name>javax.faces.view.TEMPLATE</param-name>7. <param-value>mybusiness</param-value>8. </context-param>9.10.11.</web-app>
  30. 30. Medium Sized Features
  31. 31. 28 novas funcionalidades• Facelets: • Default HTML5 DOCTYPE • Criação programática de componentes compostos • FaceletFactory API• Managed Beans • Tudo são beans injetáveis • ViewScoped• Recursos • Relative ResourceHandler
  32. 32. Small Sized Features
  33. 33. 44 correções de defeitos• Ajax• EL• Facelets• Lifecycle• Especificação de erros• Componentes/Renderizadores• Recursos
  34. 34. Contribuindo com a evolução do JSF 2.2• JSR-344 está sobre o JCP 2.8• Transparência e acesso da comunidade• 1o. Passo: Listas de email - users@javaserverfaces-spec-public.java.net - jsr344-experts@javaserverfaces-spec- public.java.net• 2o. Passo: Estudar a especificação e testar a implementação - http://jsf-spec.java.net/ - http://jsf.java.net/
  35. 35. Contribuindo com a evolução do JSF 2.2• 3o. Passo: Iniciativa adote uma JSR - http://soujava.org.br/servicos/adopt-a-jsr/• 4o. Passo: Participar do projeto ScrumToys - scrumtoys@spock.com.br
  36. 36. O projeto ScrumToys
  37. 37. Perguntas
  38. 38. Mais informações• What’s New in JSF: A Complete Tour of JSF 2.2 http://bit.ly/VCo88k• What’s new in JSF 2.2? http://jdevelopment.nl/jsf-22/• JavaServer Faces Community http://javaserverfaces.java.net/• JSR-344: JavaServer Faces 2.2 http://bit.ly/jsr344
  39. 39. Obrigado!• Contato: Dr. Spock javaone@spock.com.br• Twitter: @drspockbr• About me: http://about.me/drspockbr

×