O documento apresenta a tecnologia JavaServer Faces (JSF) e demonstra a aplicação ScrumToys desenvolvida com JSF 2.0. Apresenta os benefícios e novidades da JSF 2.0 como suporte a AJAX, templates baseados em XHTML e melhorias na navegação. Por fim, demonstra a aplicação ScrumToys e responde perguntas.
1. JSF 2.0 e ScrumToys
Dr. Spock (Alberto Lemos)
Profissional 1.5
Desenvolvedor/Instrutor Java
Arquiteto Bacanão
Globalcode – Open4education
2. 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
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
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
7. Deficiências na versão atual (JSF 1.2)
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
8. 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
9. 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
11. 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
12. 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
13. Novo escopo: ViewScoped
No faces-config.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
14. 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
15. 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
16. 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
17. 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
18. 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
19. 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
22. Mais informações
Blog da Globalcode
http://blog.globalcode.com.br/2009/10/jsf-20-e-scrumtoys.html
Blog do Spock
http://blog.spock.com.br/
E-mail do Spock
spock@globalcode.com.br
blog@spock.com.br
Globalcode – Open4education
23. 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