SlideShare uma empresa 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!  

Mais conteúdo relacionado

Mais procurados

20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門Keisuke Tsukagoshi
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleVodqaBLR
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」Naoyuki Kataoka
 
Choosing the right QA strategy for a successful project
Choosing the right QA strategy for a successful projectChoosing the right QA strategy for a successful project
Choosing the right QA strategy for a successful projectThe Software House
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with MicronautQAware GmbH
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDeleteYu Yamada
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMockGlobant
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리KwangSeob Jeong
 
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-RetryフレームワークY Watanabe
 
クリティカルチェーン・プロジェクト・マネジメント
クリティカルチェーン・プロジェクト・マネジメントクリティカルチェーン・プロジェクト・マネジメント
クリティカルチェーン・プロジェクト・マネジメントTaku Aoyama
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Akio Ishida
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumLyudmil Latinov
 
Basics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote ControlBasics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote Controlusha kannappan
 
チケットファーストでアジャイル開発!~チケットに分割して統治せよ
チケットファーストでアジャイル開発!~チケットに分割して統治せよチケットファーストでアジャイル開発!~チケットに分割して統治せよ
チケットファーストでアジャイル開発!~チケットに分割して統治せよakipii Oga
 
Getting started with karate dsl
Getting started with karate dslGetting started with karate dsl
Getting started with karate dslKnoldus Inc.
 

Mais procurados (20)

20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
 
Choosing the right QA strategy for a successful project
Choosing the right QA strategy for a successful projectChoosing the right QA strategy for a successful project
Choosing the right QA strategy for a successful project
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with Micronaut
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
 
Jakarta CDI 4.0
Jakarta CDI 4.0Jakarta CDI 4.0
Jakarta CDI 4.0
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMock
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리
 
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
 
クリティカルチェーン・プロジェクト・マネジメント
クリティカルチェーン・プロジェクト・マネジメントクリティカルチェーン・プロジェクト・マネジメント
クリティカルチェーン・プロジェクト・マネジメント
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Java ee com ejb 3
Java ee com ejb 3Java ee com ejb 3
Java ee com ejb 3
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. Selenium
 
Basics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote ControlBasics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote Control
 
チケットファーストでアジャイル開発!~チケットに分割して統治せよ
チケットファーストでアジャイル開発!~チケットに分割して統治せよチケットファーストでアジャイル開発!~チケットに分割して統治せよ
チケットファーストでアジャイル開発!~チケットに分割して統治せよ
 
Getting started with karate dsl
Getting started with karate dslGetting started with karate dsl
Getting started with karate dsl
 

Destaque

Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer FacesWillian Watanabe
 
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)Rafael Ponte
 
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 JSFRafael Ponte
 

Destaque (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
 

Semelhante a Anatomia do JSF, JavaServer Faces

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
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_Melothalesboss
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Facesbielgott
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2Saulo Arruda
 
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 EERodrigo Cândido da Silva
 
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 JavaMariana de Azevedo Santos
 
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 produtividadeRafael Ponte
 
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 javaAndrei Tognolo
 
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 WEBRafael França
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
 
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.javaEduardo Bregaida
 

Semelhante 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
 

Mais de Rafael Ponte

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 CLAUSERafael Ponte
 
TechDay Retrospectiva 2018
TechDay Retrospectiva 2018TechDay Retrospectiva 2018
TechDay Retrospectiva 2018Rafael Ponte
 
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 HypeRafael Ponte
 
Como treinar seu estagiario
Como treinar seu estagiarioComo treinar seu estagiario
Como treinar seu estagiarioRafael Ponte
 
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 CriticoRafael Ponte
 
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 - 2016Rafael Ponte
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
 
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 2015Rafael Ponte
 
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)Rafael Ponte
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Rafael Ponte
 
Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Migrations for Java (QCONSP2013)
Migrations for Java (QCONSP2013)Rafael Ponte
 
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)Rafael Ponte
 
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 diaRafael Ponte
 
Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)Hibernate Efetivo (QCONSP-2012)
Hibernate Efetivo (QCONSP-2012)Rafael Ponte
 
Migrations for Java
Migrations for JavaMigrations for Java
Migrations for JavaRafael Ponte
 
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)Rafael Ponte
 
Importância dos testes automatizadoss
Importância dos testes automatizadossImportância dos testes automatizadoss
Importância dos testes automatizadossRafael Ponte
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFRafael Ponte
 
Curso de Java server faces (JSF)
Curso de Java server faces (JSF)Curso de Java server faces (JSF)
Curso de Java server faces (JSF)Rafael Ponte
 

Mais 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.