SlideShare una empresa de Scribd logo
1 de 75
Anatomia do JSF – JavaServer Faces Rafael Ponte [email_address] http://www.rponte.com.br
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Quem sou eu? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Desenvolvimento de Aplicações Web
Introdução ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Desenvolvimento Web
Introdução Desenvolvimento Web (Java)
Introdução Model 1 (centrado em páginas)
Introdução Model 1 (Arquitetura centrada em páginas)
Introdução Model 2 (MVC)
Introdução ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Surgiram diversos frameworks MVC baseado no Model 2
Introdução ,[object Object],[object Object],[object Object],[object Object],[object Object],Problemas
JavaServer Faces!  
Mas o que é JavaServer Faces?
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
O que é JavaServer Faces? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JavaServer Faces é...
Por que usar JSF?
Por que usar JSF? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Por que usar JSF? ,[object Object],[object Object]
Por que usar JSF? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Por que usar JSF? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Por que usar JSF? MyEclipse (1)
Por que usar JSF? MyEclipse (2)
Por que usar JSF? MyEclipse (3)
Por que usar JSF? NetBeans (1)
Por que usar JSF? NetBeans (2)
Por que usar JSF? NetBeans (3)
Por que usar JSF? JSFToolbox (1)
Por que usar JSF? JSFToolbox (2)
Por que usar JSF? ,[object Object],* Mais componentes?  http://www.jsfmatrix.net/ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Por que usar JSF? MyFaces (1)
Por que usar JSF? MyFaces (2)
Por que usar JSF? MyFaces (3)
Por que usar JSF? RichFaces (1)
Por que usar JSF? RichFaces (2)
Por que usar JSF? RichFaces (3)
Por que usar JSF? WoodStock (1)
Por que usar JSF? WoodStock (2)
Overview da Tecnologia
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Conceitos chaves do JSF
Overview da tecnologia ,[object Object],[object Object],Componentes (1)
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Componentes (2)
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Renderers
Overview da tecnologia ,[object Object],Managed beans Action ActionForm Managed bean (POJO) http ,[object Object]
Overview da tecnologia Managed beans
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JSF Value Binding
Overview da tecnologia JSF Value Binding – Exemplo (1) login.jsp Objeto meuManagedBean
Overview da tecnologia JSF Value Binding – Exemplo (2) login.jsp Managed-beans são registrados dentro do faces-config.xml
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Converters (1)
Overview da tecnologia Converters (2) javax.faces.convert.Converter
Overview da tecnologia Converters (3) Converter é registrado dentro faces-config.xml, no exemplo abaixo estamos registrando um converter para que toda propriedade do tipo  org.cejug.model.CPF  de qualquer bean use este converter <converter> <converter-for-class> org.cejug.model.CPF </converter-for-class> <converter-class> org.cejug.faces.CPFConverter </converter-class> </converter>
Overview da tecnologia Converters (4) - Exemplo <h:inputText   id = “cpf“   value =&quot;#{UserRegistration.user.cpf}&quot; > <f:converter   converterId = “cejug.CPFConverter“   /> </h:inputText>   Converter declarado explicitamente Ou implicitamente (converter mapeado para objetos do tipo  CPF) <h:inputText   id = “cpf“   value =&quot;#{UserRegistration.user.cpf}&quot; > [Olha mãe!! Nenhum converter   ] </h:inputText>
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Validators (1)
Overview da tecnologia Validators (2) javax.faces.validator.Validator Validators são registrados no faces-config.xml
Overview da tecnologia Validators (3) - Exemplo <h:inputText   id = “firstName“   value =&quot;#{UserRegistration.user.firstName}“  required = “true” > <f:validateLength   minimum = &quot;2“  maximum = &quot;25“   /> </h:inputText>   Validação para obrigatoriedade e comprimento do campo
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Navegação (1)
Overview da tecnologia <navigation-rule> <from-view-id> /jsp/deposito/guincheiro/* </from-view-id> <navigation-case> <from-outcome> searchlist </from-outcome> <to-view-id> /jsp/deposito/guincheiro/searchList.jsp </to-view-id> </navigation-case> < navigation-case> <from-outcome> update </from-outcome> <to-view-id> /jsp/deposito/guincheiro/update.jsp </to-view-id> </navigation-case> </navigation-rule> Navegação (2) - Exemplo
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],Eventos (1)
Overview da tecnologia <h:commandButton   action = “listar”   value = “Listar”   /> Eventos (2) - Exemplo <h:commandLink   action =“#{cadastroBean.cadastrar}”  value = “Cadastrar”   /> public  String cadastrar() { // processa evento return   “listar” ;  // retorna para view “listar” } Action event para navegação Action event que executa método no managed-bean Método no managed-bean
Overview da tecnologia <h:selectOneMenu   id = “UF”   value =“#{cadastroBean.uf}”  valueChangeListener =“#{cadastroBean.carregaCidades}”  onchange = “submit();” > <f:selectItems  value =“#{cadastroBean.ufList}”  /> </h:selectOneMenu> Eventos (3) - Exemplo public  void carregaCidades(ValueChangeEvent event) { // processa evento String uf = event.getNewValue();   // obtém novo valor this . cidadesList  = Servico. carregaCidades (uf); // processa evento } Value-change event que executa método após alterar o valor do componente Método no managed-bean
Overview da tecnologia JSF Request Lifecycle May skip to render phase or abort request Restore View Apply Request Values Process Validations Update Model Invoke Application Render Response Request Response Retrieve component tree from client or session Decode components (populate w/ String values) Convert Strings to Objects Validate Objects Invoke bean method(s) Compute navigation Call setters  on managed beans Call bean getters to populate components
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JSF Extension Points
Overview da tecnologia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],faces-config.xml   (1)
Overview da tecnologia <faces-config  ...  > <!-- ******************************************************************* --> <!-- CONVERTERS --> <!-- ******************************************************************* --> <converter> <converter-id> core.faces.CnpfCnpjConverter </converter-id> <converter-class> core.faces.converter.CnpfCnpjConverter </converter-class> </converter> <!-- ******************************************************************* --> <!-- MANAGED BEANS --> <!-- ******************************************************************* --> <managed-bean> <managed-bean-name> reportBean </managed-bean-name> <managed-bean-class> core.faces.bean.ReportBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> <!-- ******************************************************************* --> <!-- NAVIGATION --> <!-- ******************************************************************* --> <navigation-rule> <from-view-id> /jsp/deposito/tiporeq/searchList.jsp </from-view-id> <navigation-case> <from-outcome> deposito.tiporeq.update </from-outcome> <to-view-id> /jsp/deposito/tiporeq/update.jsp </to-view-id> </navigation-case> </navigation-rule> </faces-config> faces-config.xml   (2) - Exemplo faces-config.xml
Hora de acordar !! Wake up Neo, wake up!!
Metendo a mão na massa
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Metendo a mão na massa
Metendo a mão na massa Inserindo AJAX de maneira fácil e indolor.. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusão ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Perguntas?
Obrigado!  

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Java persistence api 2.1
Java persistence api 2.1Java persistence api 2.1
Java persistence api 2.1
 
Spring core module
Spring core moduleSpring core module
Spring core module
 
Introduction to Spring's Dependency Injection
Introduction to Spring's Dependency InjectionIntroduction to Spring's Dependency Injection
Introduction to Spring's Dependency Injection
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
 
Dvm
DvmDvm
Dvm
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
 
Android Basic Components
Android Basic ComponentsAndroid Basic Components
Android Basic Components
 
Angular js
Angular jsAngular js
Angular js
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVA
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.js
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
 
Dependency Inversion Principle
Dependency Inversion PrincipleDependency Inversion Principle
Dependency Inversion Principle
 

Destacado

Destacado (8)

Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
Apostila jsf
Apostila jsfApostila jsf
Apostila jsf
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)Boas Práticas com JavaServer Faces (Jsf)
Boas Práticas com JavaServer Faces (Jsf)
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 

Similar a Anatomia do JSF, JavaServer Faces

JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
Eder Magalhães
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
Rafael Ponte
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
Rafael França
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
Eduardo Bregaida
 

Similar a Anatomia do JSF, JavaServer Faces (20)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
 
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EEGUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Jsf
JsfJsf
Jsf
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Flisolgo2010
Flisolgo2010Flisolgo2010
Flisolgo2010
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Java web
Java webJava web
Java web
 

Más de Rafael Ponte

Más de Rafael Ponte (20)

TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSETechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
TechDay: 10 Features do Oracle que voce nao conhecia - CONNECT BY CLAUSE
 
TechDay Retrospectiva 2018
TechDay Retrospectiva 2018TechDay Retrospectiva 2018
TechDay Retrospectiva 2018
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do Hype
 
Como treinar seu estagiario
Como treinar seu estagiarioComo treinar seu estagiario
Como treinar seu estagiario
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
 
Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016Como Apresentar Codigo em Slides - Javou #7 - 2016
Como Apresentar Codigo em Slides - Javou #7 - 2016
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)
 
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)Importancia dos Testes Automatizados no dia a dia (Don't Panic)
Importancia dos Testes Automatizados no dia a dia (Don't Panic)
 
Importância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a diaImportância dos testes automatizados no dia a dia
Importância dos testes automatizados no dia a dia
 
Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)
 
Migrations for Java
Migrations for JavaMigrations for Java
Migrations for Java
 
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
 
Importância dos testes automatizadoss
Importância dos testes automatizadossImportância dos testes automatizadoss
Importância dos testes automatizadoss
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
 
Curso de Java server faces (JSF)
Curso de Java server faces (JSF)Curso de Java server faces (JSF)
Curso de Java server faces (JSF)
 

Anatomia do JSF, JavaServer Faces

  • 1. Anatomia do JSF – JavaServer Faces Rafael Ponte [email_address] http://www.rponte.com.br
  • 2.
  • 3.
  • 5.
  • 7. Introdução Model 1 (centrado em páginas)
  • 8. Introdução Model 1 (Arquitetura centrada em páginas)
  • 10.
  • 11.
  • 13. Mas o que é JavaServer Faces?
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. Por que usar JSF?
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Por que usar JSF? MyEclipse (1)
  • 27. Por que usar JSF? MyEclipse (2)
  • 28. Por que usar JSF? MyEclipse (3)
  • 29. Por que usar JSF? NetBeans (1)
  • 30. Por que usar JSF? NetBeans (2)
  • 31. Por que usar JSF? NetBeans (3)
  • 32. Por que usar JSF? JSFToolbox (1)
  • 33. Por que usar JSF? JSFToolbox (2)
  • 34.
  • 35. Por que usar JSF? MyFaces (1)
  • 36. Por que usar JSF? MyFaces (2)
  • 37. Por que usar JSF? MyFaces (3)
  • 38. Por que usar JSF? RichFaces (1)
  • 39. Por que usar JSF? RichFaces (2)
  • 40. Por que usar JSF? RichFaces (3)
  • 41. Por que usar JSF? WoodStock (1)
  • 42. Por que usar JSF? WoodStock (2)
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. Overview da tecnologia Managed beans
  • 50.
  • 51. Overview da tecnologia JSF Value Binding – Exemplo (1) login.jsp Objeto meuManagedBean
  • 52. Overview da tecnologia JSF Value Binding – Exemplo (2) login.jsp Managed-beans são registrados dentro do faces-config.xml
  • 53.
  • 54. Overview da tecnologia Converters (2) javax.faces.convert.Converter
  • 55. Overview da tecnologia Converters (3) Converter é registrado dentro faces-config.xml, no exemplo abaixo estamos registrando um converter para que toda propriedade do tipo org.cejug.model.CPF de qualquer bean use este converter <converter> <converter-for-class> org.cejug.model.CPF </converter-for-class> <converter-class> org.cejug.faces.CPFConverter </converter-class> </converter>
  • 56. Overview da tecnologia Converters (4) - Exemplo <h:inputText id = “cpf“ value =&quot;#{UserRegistration.user.cpf}&quot; > <f:converter converterId = “cejug.CPFConverter“ /> </h:inputText> Converter declarado explicitamente Ou implicitamente (converter mapeado para objetos do tipo CPF) <h:inputText id = “cpf“ value =&quot;#{UserRegistration.user.cpf}&quot; > [Olha mãe!! Nenhum converter  ] </h:inputText>
  • 57.
  • 58. Overview da tecnologia Validators (2) javax.faces.validator.Validator Validators são registrados no faces-config.xml
  • 59. Overview da tecnologia Validators (3) - Exemplo <h:inputText id = “firstName“ value =&quot;#{UserRegistration.user.firstName}“ required = “true” > <f:validateLength minimum = &quot;2“ maximum = &quot;25“ /> </h:inputText> Validação para obrigatoriedade e comprimento do campo
  • 60.
  • 61. Overview da tecnologia <navigation-rule> <from-view-id> /jsp/deposito/guincheiro/* </from-view-id> <navigation-case> <from-outcome> searchlist </from-outcome> <to-view-id> /jsp/deposito/guincheiro/searchList.jsp </to-view-id> </navigation-case> < navigation-case> <from-outcome> update </from-outcome> <to-view-id> /jsp/deposito/guincheiro/update.jsp </to-view-id> </navigation-case> </navigation-rule> Navegação (2) - Exemplo
  • 62.
  • 63. Overview da tecnologia <h:commandButton action = “listar” value = “Listar” /> Eventos (2) - Exemplo <h:commandLink action =“#{cadastroBean.cadastrar}” value = “Cadastrar” /> public String cadastrar() { // processa evento return “listar” ; // retorna para view “listar” } Action event para navegação Action event que executa método no managed-bean Método no managed-bean
  • 64. Overview da tecnologia <h:selectOneMenu id = “UF” value =“#{cadastroBean.uf}” valueChangeListener =“#{cadastroBean.carregaCidades}” onchange = “submit();” > <f:selectItems value =“#{cadastroBean.ufList}” /> </h:selectOneMenu> Eventos (3) - Exemplo public void carregaCidades(ValueChangeEvent event) { // processa evento String uf = event.getNewValue(); // obtém novo valor this . cidadesList = Servico. carregaCidades (uf); // processa evento } Value-change event que executa método após alterar o valor do componente Método no managed-bean
  • 65. Overview da tecnologia JSF Request Lifecycle May skip to render phase or abort request Restore View Apply Request Values Process Validations Update Model Invoke Application Render Response Request Response Retrieve component tree from client or session Decode components (populate w/ String values) Convert Strings to Objects Validate Objects Invoke bean method(s) Compute navigation Call setters on managed beans Call bean getters to populate components
  • 66.
  • 67.
  • 68. Overview da tecnologia <faces-config ... > <!-- ******************************************************************* --> <!-- CONVERTERS --> <!-- ******************************************************************* --> <converter> <converter-id> core.faces.CnpfCnpjConverter </converter-id> <converter-class> core.faces.converter.CnpfCnpjConverter </converter-class> </converter> <!-- ******************************************************************* --> <!-- MANAGED BEANS --> <!-- ******************************************************************* --> <managed-bean> <managed-bean-name> reportBean </managed-bean-name> <managed-bean-class> core.faces.bean.ReportBean </managed-bean-class> <managed-bean-scope> request </managed-bean-scope> </managed-bean> <!-- ******************************************************************* --> <!-- NAVIGATION --> <!-- ******************************************************************* --> <navigation-rule> <from-view-id> /jsp/deposito/tiporeq/searchList.jsp </from-view-id> <navigation-case> <from-outcome> deposito.tiporeq.update </from-outcome> <to-view-id> /jsp/deposito/tiporeq/update.jsp </to-view-id> </navigation-case> </navigation-rule> </faces-config> faces-config.xml (2) - Exemplo faces-config.xml
  • 69. Hora de acordar !! Wake up Neo, wake up!!
  • 70. Metendo a mão na massa
  • 71.
  • 72.
  • 73.