SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Java Super Faces


Trilha – Java EE University
      Filipe Portes - @GoJava
     Mestre de Obra de Software



                                  Globalcode – Open4education
Agenda

   A importância da interface para o usuário
   MVC - Dividir e conquistar
   Eis que surge o JSF
   Integra com CSS, JavaScript, ajax, html 5...
   Você pode chamar atributos e métodos pelo JSF
   Escopo
   Enviando e recuperando objetos com Converter
  Validando informações com o Validator
  Economizando código com o Facelets
  Criando uma vez e usando quantas quiser
  integrando javascript, css, jquery e html 5 no jsf
  Frameworks em JSF
  E que venha o código


                                                       Globalcode – Open4education
A importância da interface para o usuário


  Aonde eles interagem
  Realiza as tarefas
  Visão aos usuários




                                            Globalcode – Open4education
A importância da interface para o usuário


  Usuabilidade
  Fácil de Interagir
  Amigável




                                            Globalcode – Open4education
A importância da interface para o usuário


  Devem evoluir com o Tempo!
  Menos é mais




                                            Globalcode – Open4education
A importância da interface para o usuário


  Qual você usaria ?




                                            Globalcode – Open4education
A importância da interface para o usuário


  Qual você usaria ?




                                            Globalcode – Open4education
A importância da interface para o usuário


  Mas não adianta ser bonito e não funcionar.




                                            Globalcode – Open4education
MVC - Dividir e conquistar


  Beleza vs Funcionamento
  Código Organizado
  Manutenção Fácil
  Sabe aonde achar o erro




                             Globalcode – Open4education
Eis que surge o JSF ( Java Server Faces)


  Java
  Especificação
  Integração
  Ajax Nativo




                                           Globalcode – Open4education
Integração




             Globalcode – Open4education
Chamando Atributos e métodos




                               Globalcode – Open4education
Chamando Atributos e métodos




                               Globalcode – Open4education
Escopo




         Globalcode – Open4education
Enviando e recuperando Objetos


   Converter
   Você programa Java
   Enviar-Receber Informações




                                 Globalcode – Open4education
Enviando e recuperando Objetos




                                 Globalcode – Open4education
Enviando e recuperando Objetos




                                 Globalcode – Open4education
Validando informações com o Validator


  Campo Obrigatório
  Tipo de Informação
  Coerência




                                        Globalcode – Open4education
Economizando código com o Facelets


  Economiza Código
  Evita “mokey codes”
  Previne dores de Cabeça
  Manutenção rápida




                                     Globalcode – Open4education
Economizando código com o Facelets




                                     Globalcode – Open4education
Economizando código com o Facelets


  Criar uma nova página




                                     Globalcode – Open4education
Economizando código com o Facelets


  Se forem mais 20 páginas




                                     Globalcode – Open4education
Economizando código com o Facelets


  Agora tem que modificar o rodapé




                                     Globalcode – Open4education
Economizando código com o Facelets


  Com Facelets fica mais fácil




                                     Globalcode – Open4education
Economizando código com o Facelets


  Com Facelets fica mais fácil




                                     Globalcode – Open4education
Criando uma vez e usando quantas quiser


   Composite Component




                                          Globalcode – Open4education
Frameworks em JSF


  Basta baixar e usar




                        Globalcode – Open4education
E que venha o código


  Demonstração




                       Globalcode – Open4education
Obrigado


                    Filipe Portes
@filipeportes
omeuefilipe@gmail.com
https://github.com/filipeportes


                                     Globalcode – Open4education

Mais conteúdo relacionado

Mais procurados

Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015Bruno Murawski
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilRafael Pinheiro
 
Comunicação em tempo real com Node.js
Comunicação em tempo real com Node.jsComunicação em tempo real com Node.js
Comunicação em tempo real com Node.jsVinicius Mussak
 
CodeIgniter 4 - Introdução
CodeIgniter 4 - IntroduçãoCodeIgniter 4 - Introdução
CodeIgniter 4 - IntroduçãoRafael Pinheiro
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
 
Cada vez que você diz sim para uma funcionalidade, você está adotando um filho
Cada vez que você diz sim para uma funcionalidade, você está adotando um filhoCada vez que você diz sim para uma funcionalidade, você está adotando um filho
Cada vez que você diz sim para uma funcionalidade, você está adotando um filhoMagno Santana Silva
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...Rodrigo Urubatan
 
Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Caliel Costa
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 

Mais procurados (20)

Custos de dizer um Sim
Custos de dizer um SimCustos de dizer um Sim
Custos de dizer um Sim
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
Comunicação em tempo real com Node.js
Comunicação em tempo real com Node.jsComunicação em tempo real com Node.js
Comunicação em tempo real com Node.js
 
CodeIgniter 4 - Introdução
CodeIgniter 4 - IntroduçãoCodeIgniter 4 - Introdução
CodeIgniter 4 - Introdução
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
 
Cada vez que você diz sim para uma funcionalidade, você está adotando um filho
Cada vez que você diz sim para uma funcionalidade, você está adotando um filhoCada vez que você diz sim para uma funcionalidade, você está adotando um filho
Cada vez que você diz sim para uma funcionalidade, você está adotando um filho
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
 
Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
O Poder do JavaScript
O Poder do JavaScriptO Poder do JavaScript
O Poder do JavaScript
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 

Destaque

Stormsatsea
StormsatseaStormsatsea
Stormsatseadrunning
 
How to Improve the Success Rate of Small Business
How to Improve the Success Rate of Small BusinessHow to Improve the Success Rate of Small Business
How to Improve the Success Rate of Small BusinessBizLaunch
 
Bottled Water Disaster
Bottled Water DisasterBottled Water Disaster
Bottled Water DisasteriApropos
 
2016 Canadian Sources of Financing for Small Business
2016 Canadian Sources of Financing for Small Business2016 Canadian Sources of Financing for Small Business
2016 Canadian Sources of Financing for Small BusinessBizLaunch
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma JavaFilipe Portes
 
Empower and Inspire Women
Empower and Inspire WomenEmpower and Inspire Women
Empower and Inspire WomenBizLaunch
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgiFilipe Portes
 

Destaque (7)

Stormsatsea
StormsatseaStormsatsea
Stormsatsea
 
How to Improve the Success Rate of Small Business
How to Improve the Success Rate of Small BusinessHow to Improve the Success Rate of Small Business
How to Improve the Success Rate of Small Business
 
Bottled Water Disaster
Bottled Water DisasterBottled Water Disaster
Bottled Water Disaster
 
2016 Canadian Sources of Financing for Small Business
2016 Canadian Sources of Financing for Small Business2016 Canadian Sources of Financing for Small Business
2016 Canadian Sources of Financing for Small Business
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma Java
 
Empower and Inspire Women
Empower and Inspire WomenEmpower and Inspire Women
Empower and Inspire Women
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgi
 

Semelhante a JSF 2 - Java "Super" Faces

Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Paulo Cesar Ortins Brito
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDIRodrigo Cândido da Silva
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA Rodrigo Cândido da Silva
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisGeorge Gastaldi
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEERafael Nunes
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Dr. Spock
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 

Semelhante a JSF 2 - Java "Super" Faces (20)

Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEE
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 

JSF 2 - Java "Super" Faces

  • 1. Java Super Faces Trilha – Java EE University Filipe Portes - @GoJava Mestre de Obra de Software Globalcode – Open4education
  • 2. Agenda A importância da interface para o usuário MVC - Dividir e conquistar Eis que surge o JSF Integra com CSS, JavaScript, ajax, html 5... Você pode chamar atributos e métodos pelo JSF Escopo Enviando e recuperando objetos com Converter Validando informações com o Validator Economizando código com o Facelets Criando uma vez e usando quantas quiser integrando javascript, css, jquery e html 5 no jsf Frameworks em JSF E que venha o código Globalcode – Open4education
  • 3. A importância da interface para o usuário Aonde eles interagem Realiza as tarefas Visão aos usuários Globalcode – Open4education
  • 4. A importância da interface para o usuário Usuabilidade Fácil de Interagir Amigável Globalcode – Open4education
  • 5. A importância da interface para o usuário Devem evoluir com o Tempo! Menos é mais Globalcode – Open4education
  • 6. A importância da interface para o usuário Qual você usaria ? Globalcode – Open4education
  • 7. A importância da interface para o usuário Qual você usaria ? Globalcode – Open4education
  • 8. A importância da interface para o usuário Mas não adianta ser bonito e não funcionar. Globalcode – Open4education
  • 9. MVC - Dividir e conquistar Beleza vs Funcionamento Código Organizado Manutenção Fácil Sabe aonde achar o erro Globalcode – Open4education
  • 10. Eis que surge o JSF ( Java Server Faces) Java Especificação Integração Ajax Nativo Globalcode – Open4education
  • 11. Integração Globalcode – Open4education
  • 12. Chamando Atributos e métodos Globalcode – Open4education
  • 13. Chamando Atributos e métodos Globalcode – Open4education
  • 14. Escopo Globalcode – Open4education
  • 15. Enviando e recuperando Objetos Converter Você programa Java Enviar-Receber Informações Globalcode – Open4education
  • 16. Enviando e recuperando Objetos Globalcode – Open4education
  • 17. Enviando e recuperando Objetos Globalcode – Open4education
  • 18. Validando informações com o Validator Campo Obrigatório Tipo de Informação Coerência Globalcode – Open4education
  • 19. Economizando código com o Facelets Economiza Código Evita “mokey codes” Previne dores de Cabeça Manutenção rápida Globalcode – Open4education
  • 20. Economizando código com o Facelets Globalcode – Open4education
  • 21. Economizando código com o Facelets Criar uma nova página Globalcode – Open4education
  • 22. Economizando código com o Facelets Se forem mais 20 páginas Globalcode – Open4education
  • 23. Economizando código com o Facelets Agora tem que modificar o rodapé Globalcode – Open4education
  • 24. Economizando código com o Facelets Com Facelets fica mais fácil Globalcode – Open4education
  • 25. Economizando código com o Facelets Com Facelets fica mais fácil Globalcode – Open4education
  • 26. Criando uma vez e usando quantas quiser Composite Component Globalcode – Open4education
  • 27. Frameworks em JSF Basta baixar e usar Globalcode – Open4education
  • 28. E que venha o código Demonstração Globalcode – Open4education
  • 29. Obrigado Filipe Portes @filipeportes omeuefilipe@gmail.com https://github.com/filipeportes Globalcode – Open4education