JSF 2.0 e ScrumToys
        Yara H. Senger               Alberto Lemos (Dr. Spock)
Diretora Educacional Globalcode   Instrutor/Arquiteto Globalcode


                                         Globalcode – Open4education
Agenda
Sobre o JavaServer Faces
Benefícios da tecnologia
Deficiências na versão atual
Principais Novidades do JSF 2.0
Demonstração do ScrumToys
Perguntas & Respotas




                                  Globalcode – Open4education
O que é JavaServer Faces
   Do mesmo criador do Struts;
   Paradigma de programação visual de User-interfaces
aplicado à web;
   É um framework que permite a criação de aplicações
Web com semântica de Swing implementando MVC;
   “Toolability = Ferramentabilidade” ;
   É uma especificação Java EE;
   Faces é mais fácil de aprender que outros
frameworks;
   Faces é mais componentizado;


                                  Globalcode – Open4education
Benefícios
  Diversas bibliotecas de componentes disponíveis;
  Suporte nas principais IDEs;
  Ampla literatura, treinamentos e foruns de
discussão;
  Integração com outras tecnologias e frameworks:
Spring, JPA, EJB, JBoss Seam
  Encapsula a complexidade do HTML, CSS e
JavaScript
  Oferece servicos fundamentais como conversores
e validadores;

                                 Globalcode – Open4education
Deficiências na versão atual
  Não oferece Templates de tela “built in”
  Complexidade para criar componentes visuais
  Não permite criar Bookmarkble URLs
  Não suporta AJAX nativamente
  Incompatibilidade entre bibliotecas de
componentes
  Uso de JSP: Scriptlets, CustomTags, etc
  Muitas configurações em XML



                                Globalcode – Open4education
Principais Novidades do JSF 2.0

 Suporte a anotações para configuração
 Suporte a AJAX
 PDL baseado em XHTML (Facelets) e JSP
 PDL extensível
 Novo escopo para MBs: ViewScoped e
CustomScoped
 Bookmarkable URLs




                             Globalcode – Open4education
Principais Novidades do JSF 2.0

 Suporte a definição de estágio do projeto
 Mecanismo de Eventos
 Gerenciamento de Recursos
 Suporte a criação de componentes via XHTML
 Navegação implícita e condicional




                              Globalcode – Open4education
Novas Anotações
Suportadas
@ManagedBean(name=”dashBoardBean”)
@ManagedProperty(“#{taskManager}”)
@RequestScoped
@ViewScoped
@SessionScoped
@ApplicationScoped
@CustomScoped
@FacesConverter(forClass=Project.class)
@FacesValidator


                               Globalcode – Open4education
Suporte a AJAX
<h:commandButton id="btnDeleteSprint"
  styleClass="botaoPostIt"
  action="#{sprintManager.remove}"
  value="#{i18n['sprint.show.button.delete']} AJAX"
  onclick="jsf.ajax.request(this, event, {execute:
  'frmListSprints', render: 'frmListSprints'});
  return false;" />
Também suporta uma tag: <f:ajax>




                                  Globalcode – Open4education
PDL baseado em XHTML
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:ui="http://java.sun.com/jsf/facelets"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:f="http://java.sun.com/jsf/core">
Incorpora o Facelets.
Não são necessárias configurações extras no
  web.xml.




                                Globalcode – Open4education
Novo escopo: ViewScoped
No web.xml:
<managed-bean>
 <managed-bean-name>dashboardMB</managed-bean-name>
 <managed-bean-class>jsf.mb.DashboardMB</managed-bean-class>
 <managed-bean-scope>view</managed-bean-scope>
</managed-bean>
No Managed Bean:
@ManagedBean(name="dashboardManager")
@ViewScoped
public class DashboardMB implements Serializable {
  ...
}



                                      Globalcode – Open4education
Estágios do Projeto
Estágios suportados: Production, Development,
  UnitTest e SystemTest

No web.xml:
<context-param>
 <param-name>javax.faces.PROJECT_STAGE</param-name>
 <param-value>Development</param-value>
</context-param>




                                      Globalcode – Open4education
Mecanismo de Eventos
Exemplos de código no ScrumToys:
jsf2.demo.scrum.web.event.*
jsf2.demo.scrum.web.controller.AbstractManager

Alguns eventos suportados:
AfterAddToParentEvent
BeforeRenderEvent
ViewMapCreatedEvent
ViewMapDestroyEvent
Suporte a tag: <f:event type=”...” listener=”...” />


                                   Globalcode – Open4education
Gerenciamento de Recursos
Novas tags: <h:head>, <h:body>, <h:outputScript> e
  <h:outputStyle>
Acesso a recursos via EL: #{resouce[...]}
...
   <h:head>
       <title>#{dashboard2MB.name}</title>
       <h:outputStylesheet library="css/1_1" name="app.css"/>
       <h:outputScript library="javax.faces" name="ajax.js"
   target="head"/>
   </h:head>
   <h:body>
   ...
    <h:form id="frmDashboard">
     <img src="#{resource['images/exemplo.jpg']}"
   width="50px"/>
   ...


                                        Globalcode – Open4education
Criação de Componentes
Exemplo de definição de Composite Component
   em:
/resources/components/postit.xhtml

Exemplo de uso do componente em:
/dashboard/show.xhtml




                              Globalcode – Open4education
Navegação
Implícita:
 <navigation-rule>
  <from-view-id>/page1.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/page2.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>

Não é necessário! Bastar no MB retornar: “page2”.
Condicional:
 <navigation-case>
  <from-outcome>success</from-outcome>
  <to-view-id>/page2.xhtml</to-view-id>
  <if>#{foo.someCondition}</if>
 </navigation-case>




                                              Globalcode – Open4education
JSF Scrum Demo
  Aplicação para gestão de projetos, sprints, estórias
e tarefas
  Implementa o conceito de skins permitindo ao
usuário trocar as cores da tela
  JSF 2, JPA, Maven, Glassfish, JavaDB
  Implementa Bookmarkble URL
  Implementação de componentes compostos
  Open Source, parte do projeto Glassfish e agora
NetBeans
  Usa Beans Validation

                                   Globalcode – Open4education
Demonstração do ScrumToys




                Globalcode – Open4education
Perguntas & Respotas




              Globalcode – Open4education
Referências
  JSF Scrum Demo
  http://www.globalcode.com.br/site/noticias/painel.seam?
chave=jsf2scrumdemo

  Blog Ed Burns
  http://www.java.net/blogs/edburns

  Blog Ryan Lubke
  http://blogs.sun.com/rlubke/

  JSF User Group
  http://groups.google.com.br/group/javasf?hl=pt-BR

                                         Globalcode – Open4education
Referências
  MC45 JavaServer Faces e Facelets: Um casamento perfeito
  http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=640

  MC17 Introdução a JSF
  http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=362

  MC27 Produtividade com JSF e EJB3
  http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=428

   MC31 Desenvolvendo um aplicativo completo com JSF, Facelets, Hibernate,
AJAX e Design Patterns
  http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=458




                                                 Globalcode – Open4education

JSF 2.0 e ScrumToys

  • 1.
    JSF 2.0 eScrumToys Yara H. Senger Alberto Lemos (Dr. Spock) Diretora Educacional Globalcode Instrutor/Arquiteto Globalcode Globalcode – Open4education
  • 2.
    Agenda Sobre o JavaServerFaces Benefícios da tecnologia Deficiências na versão atual Principais Novidades do JSF 2.0 Demonstração do ScrumToys Perguntas & Respotas Globalcode – Open4education
  • 3.
    O que éJavaServer Faces Do mesmo criador do Struts; Paradigma de programação visual de User-interfaces aplicado à web; É um framework que permite a criação de aplicações Web com semântica de Swing implementando MVC; “Toolability = Ferramentabilidade” ; É uma especificação Java EE; Faces é mais fácil de aprender que outros frameworks; Faces é mais componentizado; Globalcode – Open4education
  • 4.
    Benefícios Diversasbibliotecas de componentes disponíveis; Suporte nas principais IDEs; Ampla literatura, treinamentos e foruns de discussão; Integração com outras tecnologias e frameworks: Spring, JPA, EJB, JBoss Seam Encapsula a complexidade do HTML, CSS e JavaScript Oferece servicos fundamentais como conversores e validadores; Globalcode – Open4education
  • 5.
    Deficiências na versãoatual Não oferece Templates de tela “built in” Complexidade para criar componentes visuais Não permite criar Bookmarkble URLs Não suporta AJAX nativamente Incompatibilidade entre bibliotecas de componentes Uso de JSP: Scriptlets, CustomTags, etc Muitas configurações em XML Globalcode – Open4education
  • 6.
    Principais Novidades doJSF 2.0 Suporte a anotações para configuração Suporte a AJAX PDL baseado em XHTML (Facelets) e JSP PDL extensível Novo escopo para MBs: ViewScoped e CustomScoped Bookmarkable URLs Globalcode – Open4education
  • 7.
    Principais Novidades doJSF 2.0 Suporte a definição de estágio do projeto Mecanismo de Eventos Gerenciamento de Recursos Suporte a criação de componentes via XHTML Navegação implícita e condicional Globalcode – Open4education
  • 8.
  • 9.
    Suporte a AJAX <h:commandButtonid="btnDeleteSprint" styleClass="botaoPostIt" action="#{sprintManager.remove}" value="#{i18n['sprint.show.button.delete']} AJAX" onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints', render: 'frmListSprints'}); return false;" /> Também suporta uma tag: <f:ajax> Globalcode – Open4education
  • 10.
    PDL baseado emXHTML <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> Incorpora o Facelets. Não são necessárias configurações extras no web.xml. Globalcode – Open4education
  • 11.
    Novo escopo: ViewScoped Noweb.xml: <managed-bean> <managed-bean-name>dashboardMB</managed-bean-name> <managed-bean-class>jsf.mb.DashboardMB</managed-bean-class> <managed-bean-scope>view</managed-bean-scope> </managed-bean> No Managed Bean: @ManagedBean(name="dashboardManager") @ViewScoped public class DashboardMB implements Serializable { ... } Globalcode – Open4education
  • 12.
    Estágios do Projeto Estágiossuportados: Production, Development, UnitTest e SystemTest No web.xml: <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> Globalcode – Open4education
  • 13.
    Mecanismo de Eventos Exemplosde código no ScrumToys: jsf2.demo.scrum.web.event.* jsf2.demo.scrum.web.controller.AbstractManager Alguns eventos suportados: AfterAddToParentEvent BeforeRenderEvent ViewMapCreatedEvent ViewMapDestroyEvent Suporte a tag: <f:event type=”...” listener=”...” /> Globalcode – Open4education
  • 14.
    Gerenciamento de Recursos Novastags: <h:head>, <h:body>, <h:outputScript> e <h:outputStyle> Acesso a recursos via EL: #{resouce[...]} ... <h:head> <title>#{dashboard2MB.name}</title> <h:outputStylesheet library="css/1_1" name="app.css"/> <h:outputScript library="javax.faces" name="ajax.js" target="head"/> </h:head> <h:body> ... <h:form id="frmDashboard"> <img src="#{resource['images/exemplo.jpg']}" width="50px"/> ... Globalcode – Open4education
  • 15.
    Criação de Componentes Exemplode definição de Composite Component em: /resources/components/postit.xhtml Exemplo de uso do componente em: /dashboard/show.xhtml Globalcode – Open4education
  • 16.
    Navegação Implícita: <navigation-rule> <from-view-id>/page1.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/page2.xhtml</to-view-id> </navigation-case> </navigation-rule> Não é necessário! Bastar no MB retornar: “page2”. Condicional: <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/page2.xhtml</to-view-id> <if>#{foo.someCondition}</if> </navigation-case> Globalcode – Open4education
  • 17.
    JSF Scrum Demo Aplicação para gestão de projetos, sprints, estórias e tarefas Implementa o conceito de skins permitindo ao usuário trocar as cores da tela JSF 2, JPA, Maven, Glassfish, JavaDB Implementa Bookmarkble URL Implementação de componentes compostos Open Source, parte do projeto Glassfish e agora NetBeans Usa Beans Validation Globalcode – Open4education
  • 18.
    Demonstração do ScrumToys Globalcode – Open4education
  • 19.
    Perguntas & Respotas Globalcode – Open4education
  • 20.
    Referências JSFScrum Demo http://www.globalcode.com.br/site/noticias/painel.seam? chave=jsf2scrumdemo Blog Ed Burns http://www.java.net/blogs/edburns Blog Ryan Lubke http://blogs.sun.com/rlubke/ JSF User Group http://groups.google.com.br/group/javasf?hl=pt-BR Globalcode – Open4education
  • 21.
    Referências MC45JavaServer Faces e Facelets: Um casamento perfeito http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=640 MC17 Introdução a JSF http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=362 MC27 Produtividade com JSF e EJB3 http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=428 MC31 Desenvolvendo um aplicativo completo com JSF, Facelets, Hibernate, AJAX e Design Patterns http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=458 Globalcode – Open4education